MultiSig Timelock

First Flight #55
Beginner FriendlyWallet
100 EXP
Submission Details
Impact: low
Likelihood: high

Read-Only Getter Returns Data for Non-existent Transactions

Author Revealed upon completion

Root + Impact

Description

  • Normal behavior:
    Users expect getters to return valid data only for existing transactions.

  • Issue:
    getTransaction() returns an empty struct for invalid IDs, which can mislead off-chain systems.

function getTransaction(uint256 transactionId)
external view
returns (Transaction memory)
{
return s_transactions[transactionId];
}

Risk

Likelihood:

  • Occurs whenever off-chain systems query invalid IDs

Occurs during indexing or UI pagination

Impact:

  • Incorrect UI state

Misleading analytics

Proof of Concept

getTransaction(999); // returns empty struct, not revert

Recommended Mitigation

+ require(
+ transactionId < s_transactionCount,
+ "Transaction does not exist"
+ );

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!