In Rescuable
smart contract which is a helper contract that is used by other contracts as a helper functionality there is a setPauseStatus()
function meaning the contract must be paused in emergency situations when needed. The problem is that there is no whenNotPaused
modifier meaning that no functionality can be paused.
Take a look at the setPauseStatus()
:
https://github.com/Cyfrin/2024-08-tadle/blob/main/src/utils/Rescuable.sol#L46-55
The problem is that to use the pausing functionality, whenNotPaused
modifier should be implemented on one of the functions. As the contract has important transfer functions that other contracts in-scope implement, the pausability cannot be used to handle emergency situations.
No functionality can be paused which is not the expected behavior.
Manual review.
Add whenNotPaused
modifier where it's needed.
I believe this is informational and non-acceptable severity because: - A single pause on withdraw to be sufficient to pause the markets during times of emergencies, given that is the only function where collateral/point tokens/native ETH can be pulled from market transactions. - Every tadle market place can be switched offline by the admin via [`updateMarketPlaceStatus`](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/core/SystemConfig.sol#L160-L171) and is checked in market actions via [`checkMarketPlaceStatus`](https://github.com/Cyfrin/2024-08-tadle/blob/04fd8634701697184a3f3a5558b41c109866e5f8/src/libraries/MarketPlaceLibraries.sol#L54-L67) to be online. This prevents many major market actions including the creation, listing and settlement of offers.
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.