The executeTransaction
function does not check whether the contract has enough ETH before attempting to send funds. This can lead to transaction failures, wasted gas, and a potential denial-of-service (DoS) scenario for pending transactions.
Function Affected:
Issue:
The contract does not check if it has enough balance before calling .call{value: txn.value}("")
.
If the contract does not have enough ETH, the transaction fails and reverts, consuming gas but not executing the payment.
Pending transactions could never be executed if the contract balance is depleted.
**Gas Wastage: **Users attempting to execute transactions lose gas fees if the contract does not have enough funds.
**Denial of Service (DoS) Risk: **If multiple transactions are approved but cannot be executed, they remain stuck in the contract forever.
**Funds Mismanagement: **If an owner approves a large transaction, but another transaction depletes the balance before execution, the transaction can never be completed.
Manuel Review
Modify executeTransaction
to check the contract balance before sending funds:
Fixed Code:
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelihood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.