forked from townforge/townforge
cc: prevent more bad matched nonces in trade and match commands
This commit is contained in:
parent
f73670b90a
commit
7cb1d0f69d
@ -105,6 +105,8 @@ bool cc_command_handler_match::check(const cryptonote::BlockchainDB &db, const c
|
||||
std::set<uint32_t> seen;
|
||||
for (const auto &e: match.matches)
|
||||
{
|
||||
CHECK_COMMAND_SET(e.nonce, tvc.m_cc_bad_match, "Match matches 0 nonce");
|
||||
CHECK_COMMAND_SET(e.nonce != match.cc_nonce, tvc.m_cc_bad_match, "Match matches itself");
|
||||
CHECK_COMMAND_SET(e.amount > 0, tvc.m_cc_bad_match, "Match for 0 amount");
|
||||
CHECK_COMMAND_SET(e.amount <= std::numeric_limits<uint32_t>::max() - matched, tvc.m_cc_overflow, "Overflow in matches");
|
||||
CHECK_COMMAND_SET(seen.find(e.nonce) == seen.end(), tvc.m_cc_duplicate, "Duplicate nonce in matches");
|
||||
|
@ -83,6 +83,8 @@ bool cc_command_handler_trade::check(const cryptonote::BlockchainDB &db, const c
|
||||
std::unordered_set<uint64_t> seen;
|
||||
for (const auto &m: trade.matches)
|
||||
{
|
||||
CHECK_COMMAND_SET(m.nonce, tvc.m_cc_bad_match, "Trade matches 0 nonce");
|
||||
CHECK_COMMAND_SET(m.nonce != trade.cc_nonce, tvc.m_cc_bad_match, "Trade matches itself");
|
||||
CHECK_COMMAND_SET(m.amount > 0, tvc.m_cc_bad_amount, "Trades matches with a 0 amount");
|
||||
CHECK_COMMAND_SET(m.amount <= std::numeric_limits<uint32_t>::max() - aggregate_amount, tvc.m_cc_overflow, "Matching overflow");
|
||||
aggregate_amount += m.amount;
|
||||
|
Loading…
Reference in New Issue
Block a user