The Shelf
contract which is inherited by both MoneyVault
and MoneyShelf
contract keeps track of every deposit using the bank
mapping.
The Shelf
contract is an abstract contract inherited by both MoneyVault
and MoneyShelf
and it keeps track of every deposit made using the bank
mapping and uses it in the withdraw function hence a gangMember
or the godFather
can only withdraw as much as they deposit.
The contract allows anyone to deposit but only allows the godFather
and gangMembers
to withdraw but due to the bank
mapping that only allows withdrawal on as much as has been deposited, the gangMembers
and the godFather
will only be able to withdraw as much as they deposited which means anyone who isn't the godFather
or gangMembers
and deposits, their funds cannot be withdrawn leading to it being stuck in the contract.
Manual Analysis
One way of addressing this could be by using different deposit functions for users (which doesn't track their deposits), gangMembers and the godFather such that the godFather can withdraw any amount of tokens avaliable at any given time.
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.