RustFund

First Flight #36
Beginner FriendlyRust
100 EXP
View results
Submission Details
Severity: medium
Valid

Deadline can always be changed

Summary

The set_deadline function checks fund.dealine_set for the DeadlineAlreadySet error, but fund.dealine_set never changed from initial value (false).

Vulnerability Details

pub fn set_deadline(ctx: Context<FundSetDeadline>, deadline: u64) -> Result<()> {
let fund = &mut ctx.accounts.fund;
if fund.dealine_set {
return Err(ErrorCode::DeadlineAlreadySet.into());
}
// ! deadline set is not set into true, deadline_set is being used as checking if its set or not, so deadline can be always changed.
fund.deadline = deadline;
Ok(())
}

Impact

  • The creator could just extend the deadline so the contributors could never do refunds.

Recommendations

Make sure to set the fund.dealine_set to true after setting the deadline.

pub fn set_deadline(ctx: Context<FundSetDeadline>, deadline: u64) -> Result<()> {
let fund = &mut ctx.accounts.fund;
if fund.dealine_set {
return Err(ErrorCode::DeadlineAlreadySet.into());
}
fund.deadline = deadline;
// set dealine_set to true
fund.dealine_set = true;
Ok(())
}
Updates

Appeal created

bube Lead Judge 6 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Deadline set flag is not updated in `set_deadline` function

Support

FAQs

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