The contribute
function updates the amount_raised
field using unchecked arithmetic (+=
), which can lead to integer overflow. This vulnerability could result in incorrect accounting of funds, potentially allowing malicious users to exploit the contract.
In the contribute
function, the amount_raised
field is updated as follows:
This operation does not check for overflow, which can occur if amount_raised + amount
exceeds the maximum value of a u64
.
If an overflow occurs, the amount_raised
field will wrap around to a small value, leading to incorrect accounting of funds.
manual review
Replace the unchecked arithmetic with checked_add
to handle overflow safely:
The max value of u64 is: 18,446,744,073,709,551,615 or around 18.4 billion SOL, given that the total supply of SOL on Solana is 512.50M, the scenario when the `contribute` function will revert due to overflow is very very unlikely to happen. Therefore, this is informational finding.
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.