The contract makes external calls to tokenManager.tillIn() without checking the return value. If these calls fail, the function continues executing, which could lead to inconsistent state.
If the tillIn function fails (e.g., due to insufficient balance or a paused contract), the contract will continue execution as if the transfer succeeded. This could lead to significant discrepancies between the expected and actual token balances, potentially allowing users to receive tokens or benefits they shouldn't.
In the settleAskMaker function:
If tokenManager.tillIn() fails silently (e.g., due to insufficient balance), the function will continue execution. This results in:
The caller not actually transferring the tokens.
The offer being marked as settled with perMarkets.settledAskOffer().
An event being emitted suggesting a successful settlement.
This creates a state where the contract believes a settlement occurred, but no actual token transfer took place.
Manual Review
Check the return value of tillIn and revert the transaction if it fails.
If tillIn doesn't return a boolean, consider modifying it to do so, or use a try/catch structure to handle potential reverts.
Add events to log any failed transfers for off-chain monitoring.
Example:
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.