Contract like CapitalPool.sol, DeliveryPlace.sol, PreMarkets.sol, SystemConfig.sol, and TokenManager.sol inherits Rescuable.sol. While erc20 like a USDT not returning a boolean for transfer and transferFrom function, this will lead to DoS for various function like TokenManager::tillIn , TokenManager::withdraw, TokenManager::rescue, etc.
Unlike standard ERC20 tokens, which return a boolean value upon executing transfer and transferFrom operations and revert the transaction in case of failure, USDT lacks this important feature.
USDT's transfer and transferFrom functions do not return a boolean value. Instead, they simply calculate the fee and update the main state for transferring tokens without providing any return value.
The problem is this will make the function revert because it creates bool success as returned value but nothing is returned because the USDT transfer mechanism.
Therefore the next check to ensure success return truthy value will not be used and useless in this case.
DoS for function which inherits Rescuable::_safe_transfer and Rescuable::_safe_transfer_from function.
Manual Review
Consider using safeTransfer and safeTransferFrom from SafeERC20 library by Openzeppelin to tackle this issue.
I believe the issues and duplicates do not warrant low severity severity as even if the call to transfers returns false instead of reverting, there is no impact as it is arguably correct given there will be insufficient funds to perform a rescue/withdrawal. This will not affect `tillIn()` as there are explicit balance [checks that revert accordingly](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/TokenManager.sol#L255-L260) to prevent allowing creation of offers without posting the necessary collateral
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.