set_deadline performs no deadline > now check, so the creator can set an already-passed deadline and instantly flip the campaign into the refund phase.
In set_deadline() (programs/rustfund/src/lib.rs), the new deadline is stored without validating it against Clock::get().unix_timestamp. A past timestamp is accepted silently.
Low severity / Low likelihood: requires the creator to act against their own campaign; instantly opens the refund path (per M-2's lifecycle break) and can surprise contributors mid-raise.
Call set_deadline(yesterday) → succeeds; the campaign is immediately in the post-deadline phase. (Verified by code inspection.)
Add require!(deadline > Clock::get().unwrap().unix_timestamp, InvalidDeadline); in set_deadline().
Access control on privileged fns (has_one = creator + Signer) and checked math on the transfers themselves were verified sound.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.