mirror of
https://git.wownero.com/wownero/wownero.git
synced 2024-08-15 01:03:23 +00:00
wallet2: don't store 0 amount outputs, they'll fail to be spent
It's better to just ignore them, the user does not really need to know they're here. If the mask is wrong, they'll fail to be used, and sweeping will fail as it tries to use it. Reported by Josh Davis.
This commit is contained in:
parent
7b06d497f4
commit
586b32a7ca
1 changed files with 7 additions and 1 deletions
|
@ -1333,11 +1333,17 @@ void wallet2::scan_output(const cryptonote::transaction &tx, bool miner_tx, cons
|
|||
}
|
||||
|
||||
THROW_WALLET_EXCEPTION_IF(std::find(outs.begin(), outs.end(), i) != outs.end(), error::wallet_internal_error, "Same output cannot be added twice");
|
||||
outs.push_back(i);
|
||||
if (tx_scan_info.money_transfered == 0 && !miner_tx)
|
||||
{
|
||||
tx_scan_info.money_transfered = tools::decodeRct(tx.rct_signatures, tx_scan_info.received->derivation, i, tx_scan_info.mask, m_account.get_device());
|
||||
}
|
||||
if (tx_scan_info.money_transfered == 0)
|
||||
{
|
||||
MERROR("Invalid output amount, skipping");
|
||||
tx_scan_info.error = true;
|
||||
return;
|
||||
}
|
||||
outs.push_back(i);
|
||||
THROW_WALLET_EXCEPTION_IF(tx_money_got_in_outs[tx_scan_info.received->index] >= std::numeric_limits<uint64_t>::max() - tx_scan_info.money_transfered,
|
||||
error::wallet_internal_error, "Overflow in received amounts");
|
||||
tx_money_got_in_outs[tx_scan_info.received->index] += tx_scan_info.money_transfered;
|
||||
|
|
Loading…
Reference in a new issue