diff options
author | Riccardo Spagni <ric@spagni.net> | 2018-04-12 13:46:34 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2018-04-12 13:46:34 +0200 |
commit | 226de8e9285bd3eec2965f9b8273a0819f312ce0 (patch) | |
tree | 9286781592cfd5589f3d12ab9003eca08ff498aa /src | |
parent | Merge pull request #3516 (diff) | |
parent | cryptonote_tx_util: make destinations properly shuffled (diff) | |
download | monero-226de8e9285bd3eec2965f9b8273a0819f312ce0.tar.xz |
Merge pull request #3530
eb59f7c5 cryptonote_tx_util: make destinations properly shuffled (stoffu)
Diffstat (limited to 'src')
-rw-r--r-- | src/cryptonote_core/cryptonote_tx_utils.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/cryptonote_core/cryptonote_tx_utils.cpp b/src/cryptonote_core/cryptonote_tx_utils.cpp index db4ab9e11..c2252fcc7 100644 --- a/src/cryptonote_core/cryptonote_tx_utils.cpp +++ b/src/cryptonote_core/cryptonote_tx_utils.cpp @@ -29,6 +29,7 @@ // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers #include <unordered_set> +#include <random> #include "include_base_utils.h" #include "string_tools.h" using namespace epee; @@ -316,7 +317,7 @@ namespace cryptonote // "Shuffle" outs std::vector<tx_destination_entry> shuffled_dsts(destinations); - std::random_shuffle(shuffled_dsts.begin(), shuffled_dsts.end(), [](unsigned int i) { return crypto::rand<unsigned int>() % i; }); + std::shuffle(shuffled_dsts.begin(), shuffled_dsts.end(), std::default_random_engine(crypto::rand<unsigned int>())); // sort ins by their key image std::vector<size_t> ins_order(sources.size()); @@ -363,7 +364,7 @@ namespace cryptonote uint64_t summary_outs_money = 0; //fill outputs size_t output_index = 0; - for(const tx_destination_entry& dst_entr: destinations) + for(const tx_destination_entry& dst_entr: shuffled_dsts) { CHECK_AND_ASSERT_MES(dst_entr.amount > 0 || tx.version > 1, false, "Destination with wrong amount: " << dst_entr.amount); crypto::key_derivation derivation; |