If either an ETH or an ERC20 transfer in withdrawInheritedFunds fails, the whole function will revert. This can lock all funds within the contract.
If a beneficiary is a contract which reverts in the receive function this will cause withdrawInheritedFunds to revert.
For instance with this contract:
This test will fail:
A malicious user can prevent other users from getting their inheritance permanently (on the price of loosin his/her inheritance as well). This breaks the intended functionality of the contract.
Manual review, foundry tests.
If transfer fails to one user contnue sending ETH to other users. Design some business logic that handles the remaining ETH in such a case (e.g. divide it among other beneficiaries or allow beneficiaries to claim their shares one by one, etc).
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.