When msg.sender is a contract, calling the withdraw function with the _tokenAddress input being wrappedNativeToken can revert if msg.sender's receive function consumes more than 2300 gas. Thus, such msg.sender would not be able to claim the corresponding claimAbleAmount that it is entitled to.
The following withdraw function executes payable(msg.sender).transfer(claimAbleAmount) if _tokenAddress == wrappedNativeToken is true in which such transfer function call would forward 2300 gas. When msg.sender is a smart contract, its receive function can contain complex logics that consume more than 2300 gas. In this case, calling such receive function reverts due to insufficient gas so the withdraw function call reverts as well.
When calling the withdraw function reverts, the msg.sender fails to claim the corresponding claimAbleAmount that it is entitled to.
Manual Review
https://github.com/Cyfrin/2024-08-tadle/blob/c249cdb68c37c47025cdc4c4782c8ee3f20a5b98/src/core/TokenManager.sol#L169 can be updated to the following code.
Invalid, known issues [Medium-2](https://github.com/Cyfrin/2024-08-tadle/issues/1)
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.