The try/catch
blocks are used inside several the functions (LibWillMinting::initializeOracle
, LibChainlinkOracle::getPrice
, LibUniswapOracle::consult
, LibWell::getTwaReservesFromBeanstalkPump
) without ensuring sufficient gas for the operations within the try
block. try/catch
blocks are used to handle exceptions without halting the entire transaction. If the gas supplied to these operations is insufficient, the call within the try
block may revert, leading the catch
block to execute. This situation can cause unexpected behaviors.
When a smart contract uses a try/catch
block to handle exceptions or to attempt operations that may fail, it's important to consider the gas implications. A try/catch
block allows a contract to attempt an operation (in the try
block) and to catch failures (in the catch
block) without causing the entire transaction to revert. However, if the gas provided to the try
block operation is insufficient, the operation can fail due to an "out of gas" error. This failure mode isn't what the devs intended when catching exceptions (the intention was to catch and handle specific contract-related errors rather than generic execution issues like out of gas). This unforeseen situation can cause unexpected behaviors.
Manual review.
Ensure sufficient gas is supplied when using the try/catch
block.
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.