Replace std::random_shuffle with std::shuffle

According to [1], std::random_shuffle is deprecated in C++14 and removed
in C++17. Since std::shuffle is available since C++11 as a replacement
and monero already requires C++11, this is a good replacement.

A cryptographically secure random number generator is used in all cases
to prevent people from perhaps copying an insecure std::shuffle call
over to a place where a secure one would be warranted. A form of
defense-in-depth.

[1]: https://en.cppreference.com/w/cpp/algorithm/random_shuffle
This commit is contained in:
Tom Smeding
2019-07-03 11:05:01 +02:00
parent 1bb4ae3b5e
commit 7b9a420787
5 changed files with 7 additions and 7 deletions
+1 -1
View File
@@ -354,7 +354,7 @@ namespace cryptonote
if (shuffle_outs)
{
std::shuffle(destinations.begin(), destinations.end(), std::default_random_engine(crypto::rand<unsigned int>()));
std::shuffle(destinations.begin(), destinations.end(), crypto::random_device{});
}
// sort ins by their key image