HardhatFoundry
30,000 USDC
View results
Submission Details
Severity: low
Invalid

No check on "_tryExecute" ,_tryExecuteBatch and "_tryExecuteDelegatecall".

Summary

No check for the success of _tryExecute" ,_tryExecuteBatch and "_tryExecuteDelegatecall".

Vulnerability Details

function _handleSingleExecution(bytes calldata executionCalldata, ExecType execType) internal {\
(address target, uint256 value, bytes calldata callData) = executionCalldata.decodeSingle();\
if (execType == EXECTYPE\_DEFAULT) \_execute(target, value, callData);\
@>else if (execType == EXECTYPE\_TRY) \_tryExecute(target, value, callData);\
else revert UnsupportedExecType(execType);\
}
/// @dev Executes a batch of transactions based on the specified execution type.
/// @param executionCalldata The calldata for a batch of transactions.
/// @param execType The execution type, which can be DEFAULT (revert on failure) or TRY (return on failure).
function _handleBatchExecution(bytes calldata executionCalldata, ExecType execType) internal {
Execution[] calldata executions = executionCalldata.decodeBatch();
if (execType == EXECTYPE_DEFAULT) _executeBatch(executions);
@> else if (execType == EXECTYPE_TRY) _tryExecuteBatch(executions);
else revert UnsupportedExecType(execType);
}
/// @dev Executes a single transaction based on the specified execution type.
/// @param executionCalldata The calldata containing the transaction details (target address, value, and data).
/// @param execType The execution type, which can be DEFAULT (revert on failure) or TRY (return on failure).
function _handleDelegateCallExecution(bytes calldata executionCalldata, ExecType execType) internal {
(address delegate, bytes calldata callData) = executionCalldata.decodeDelegateCall();
if (execType == EXECTYPE_DEFAULT) _executeDelegatecall(delegate, callData);
@> else if (execType == EXECTYPE_TRY) _tryExecuteDelegatecall(delegate, callData);
else revert UnsupportedExecType(execType);
}

Impact

we will not know whether all this execute calls are successful or not.

Tools Used

Recommendations

check for success.

function _handleDelegateCallExecution(bytes calldata executionCalldata, ExecType execType) internal {
(address delegate, bytes calldata callData) = executionCalldata.decodeDelegateCall();
if (execType == EXECTYPE_DEFAULT) _executeDelegatecall(delegate, callData);


@> else if (execType == EXECTYPE_TRY)

{

sucess=_tryExecuteDelegatecall(delegate, callData);

require(success);
else revert UnsupportedExecType(execType);
}

}

Updates

Lead Judging Commences

0xnevi Lead Judge 11 months ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement
Assigned finding tags:

finding-unchecked-external-call

Invalid, eventually checked within `_execute()/_tryExecute()` and `_executeBatch()/_tryExecuteBatch(0` within `ExecutionHelper.sol` respectively as seen [here](https://github.com/Cyfrin/2024-07-biconomy/blob/9590f25cd63f7ad2c54feb618036984774f3879d/contracts/base/ExecutionHelper.sol)

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.