RustFund

First Flight #36
Beginner FriendlyRust
100 EXP
View results
Submission Details
Severity: high
Invalid

Contribution fails as transfer sol from PDA works with .try_borrow_mut_lamports()? +/- but not with transfer instruction

Summary

Transfer sol from PDA works with .try_borrow_mut_lamports()? but not with transfer instruction preventing accounts from contributing.

Vulnerability Details

Contributors are PDA and PDA aren't be able to call transfer that is called in contribute function. This call fails, preventing accounts from contributing.

// Transfer SOL from contributor to fund account
let cpi_context = CpiContext::new(
ctx.accounts.system_program.to_account_info(),
system_program::Transfer {
from: ctx.accounts.contributor.to_account_info(),
to: fund.to_account_info(),
},
);
system_program::transfer(cpi_context, amount)?;

Impact

Contributions will not be performed successfully

Tools Used

Manual Review

Recommendations

Use .try_borrow_mut_lamports()? instead

Updates

Lead Judging Commences

bube Lead Judge
2 months ago

Appeal created

bube Lead Judge about 2 months ago
Submission Judgement Published
Invalidated
Reason: Too generic

Support

FAQs

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