Update cryptonote_format_utils.cpp

Fixed problem with integer saturation when summing summary_amounts and out_amounts in a 32-bit platform.
This commit is contained in:
NoodleDoodleNoodleDoodleNoodleDoodleNoo 2014-05-07 17:15:43 -07:00
parent b27f060815
commit ed444b7175

View File

@ -80,7 +80,7 @@ namespace cryptonote
#endif #endif
block_reward += fee; block_reward += fee;
std::vector<size_t> out_amounts; std::vector<uint64_t> out_amounts;
decompose_amount_into_digits(block_reward, DEFAULT_FEE, decompose_amount_into_digits(block_reward, DEFAULT_FEE,
[&out_amounts](uint64_t a_chunk) { out_amounts.push_back(a_chunk); }, [&out_amounts](uint64_t a_chunk) { out_amounts.push_back(a_chunk); },
[&out_amounts](uint64_t a_dust) { out_amounts.push_back(a_dust); }); [&out_amounts](uint64_t a_dust) { out_amounts.push_back(a_dust); });
@ -92,7 +92,7 @@ namespace cryptonote
out_amounts.resize(out_amounts.size() - 1); out_amounts.resize(out_amounts.size() - 1);
} }
size_t summary_amounts = 0; uint64_t summary_amounts = 0;
for (size_t no = 0; no < out_amounts.size(); no++) for (size_t no = 0; no < out_amounts.size(); no++)
{ {
crypto::key_derivation derivation = AUTO_VAL_INIT(derivation);; crypto::key_derivation derivation = AUTO_VAL_INIT(derivation);;