cryptonote: fix reuse of non default tx data when relaying
An automatic tx variable is initialized properly on the first run through the loop, but not the second. Moving the variable inside the loop ensures the ctor is called again to init it.
This commit is contained in:
parent
57854a3e21
commit
2efbd5f0cc
|
@ -146,6 +146,8 @@ namespace cryptonote
|
||||||
if (tx.version >= 2 && !is_coinbase(tx))
|
if (tx.version >= 2 && !is_coinbase(tx))
|
||||||
{
|
{
|
||||||
rct::rctSig &rv = tx.rct_signatures;
|
rct::rctSig &rv = tx.rct_signatures;
|
||||||
|
if (rv.type == rct::RCTTypeNull)
|
||||||
|
return true;
|
||||||
if (rv.outPk.size() != tx.vout.size())
|
if (rv.outPk.size() != tx.vout.size())
|
||||||
{
|
{
|
||||||
LOG_PRINT_L1("Failed to parse transaction from blob, bad outPk size in tx " << get_transaction_hash(tx));
|
LOG_PRINT_L1("Failed to parse transaction from blob, bad outPk size in tx " << get_transaction_hash(tx));
|
||||||
|
|
|
@ -1308,9 +1308,9 @@ namespace cryptonote
|
||||||
std::vector<crypto::hash> tx_hashes{};
|
std::vector<crypto::hash> tx_hashes{};
|
||||||
tx_hashes.resize(tx_blobs.size());
|
tx_hashes.resize(tx_blobs.size());
|
||||||
|
|
||||||
cryptonote::transaction tx{};
|
|
||||||
for (std::size_t i = 0; i < tx_blobs.size(); ++i)
|
for (std::size_t i = 0; i < tx_blobs.size(); ++i)
|
||||||
{
|
{
|
||||||
|
cryptonote::transaction tx{};
|
||||||
if (!parse_and_validate_tx_from_blob(tx_blobs[i], tx, tx_hashes[i]))
|
if (!parse_and_validate_tx_from_blob(tx_blobs[i], tx, tx_hashes[i]))
|
||||||
{
|
{
|
||||||
LOG_ERROR("Failed to parse relayed transaction");
|
LOG_ERROR("Failed to parse relayed transaction");
|
||||||
|
|
Loading…
Reference in New Issue