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
4cb99f9365
commit
0c201ab438
|
@ -160,6 +160,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));
|
||||||
|
|
|
@ -1349,9 +1349,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