Users deposit assets and join the event, staking funds in the vault until the tournament ends, after which winners can withdraw based on shares.
The owner must call setWinner after the event to set the winner and enable withdrawals via the winnerSet modifier.
The issue is that there is no timeout, fallback, or decentralized mechanism for finalization, so if the owner never calls setWinner (due to inactivity, loss of keys, or malice), the _setWinner flag remains false.
This permanently locks all deposited assets in the vault, as withdrawals require the winner to be set, with no way for users or others to recover funds
Likelihood:Low
Owner becomes inactive or maliciously refuses to call setWinner after the event ends.
Impact:High
All user deposits remain locked indefinitely, leading to total funds loss.
No withdrawals or refunds possible, eroding trust in the contract and causing permanent asset inaccessibility.
Add function testPermanentFundLock to briVault.t.sol
run forge test --mt testPermanentFundLock
Add a timeout mechanism for refunds if winner not set
New function for refunds after timeout
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.