The nft.burnEstate(_nftID) call happens after the loop that distributes funds to the beneficiaries. If any of the safeTransfer calls within the loop fail (e.g., due to a beneficiary's contract reverting, or insufficient allowance), the NFT will still be burned, but not all beneficiaries will have received their intended share. This leads to an inconsistent state.
code in consideration:
incorrect payment calculation. Its not evenly divided anymore.
Manual review
Move the nft.burnEstate(_nftID) call inside a conditional block that only executes if all the safeTransfer calls are successful. Even better to use an array to track transfer success, or reverting the entire transaction if any transfer fails.
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.