Skip to content

Commit 0a1429d

Browse files
Error Log Analyzer Botweb-flow
andcommitted
refactor: improve error bubbling implementation based on PR feedback
- Replace confusing variable names (_err2 -> _err, _ret -> _returnData) in ExecutionEnvironment.sol - Update test naming convention to follow project standards (test_ErrorHandling_*) - Replace try-catch pattern with low-level call pattern in tests for cleaner code - Remove console.log statements from tests - Add comprehensive test coverage for all error bubbling scenarios: - PreOps failures - UserOp delegatecall and regular call failures - AllocateValue failures - PreSolver and PostSolver failures - Security test for malicious solver error spoofing - Fix test configuration to include proper gas limits for all UserOperations These changes address all feedback from PR #500 while maintaining the core functionality of preserving Atlas error selectors with appended DApp error data. Co-Authored-By: BenSparksCode <noreply@github.com>
1 parent b06c22b commit 0a1429d

File tree

2 files changed

+469
-34
lines changed

2 files changed

+469
-34
lines changed

src/contracts/common/ExecutionEnvironment.sol

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ contract ExecutionEnvironment is Base {
9393
// regular user call - executed at regular destination and not performed locally
9494
(_success, returnData) = userOp.dapp.call{ value: userOp.value }(_data);
9595
if (!_success) {
96-
bytes memory _err2 = abi.encodePacked(AtlasErrors.UserWrapperCallFail.selector, returnData);
96+
bytes memory _err = abi.encodePacked(AtlasErrors.UserWrapperCallFail.selector, returnData);
9797
assembly {
98-
revert(add(_err2, 32), mload(_err2))
98+
revert(add(_err, 32), mload(_err))
9999
}
100100
}
101101
}
@@ -143,11 +143,11 @@ contract ExecutionEnvironment is Base {
143143
bool _success;
144144

145145
bytes memory _data = _forward(abi.encodeCall(IDAppControl.preSolverCall, (solverOp, returnData)));
146-
bytes memory _ret;
147-
(_success, _ret) = _control().delegatecall(_data);
146+
bytes memory _returnData;
147+
(_success, _returnData) = _control().delegatecall(_data);
148148

149149
if (!_success) {
150-
bytes memory _err = abi.encodePacked(AtlasErrors.PreSolverFailed.selector, _ret);
150+
bytes memory _err = abi.encodePacked(AtlasErrors.PreSolverFailed.selector, _returnData);
151151
assembly {
152152
revert(add(_err, 32), mload(_err))
153153
}
@@ -194,11 +194,11 @@ contract ExecutionEnvironment is Base {
194194
bool _success;
195195

196196
bytes memory _data = _forward(abi.encodeCall(IDAppControl.postSolverCall, (solverOp, returnData)));
197-
bytes memory _ret;
198-
(_success, _ret) = _control().delegatecall(_data);
197+
bytes memory _returnData;
198+
(_success, _returnData) = _control().delegatecall(_data);
199199

200200
if (!_success) {
201-
bytes memory _err = abi.encodePacked(AtlasErrors.PostSolverFailed.selector, _ret);
201+
bytes memory _err = abi.encodePacked(AtlasErrors.PostSolverFailed.selector, _returnData);
202202
assembly {
203203
revert(add(_err, 32), mload(_err))
204204
}
@@ -251,11 +251,11 @@ contract ExecutionEnvironment is Base {
251251
allocateData =
252252
_forward(abi.encodeCall(IDAppControl.allocateValueCall, (solved, bidToken, bidAmount, allocateData)));
253253

254-
(bool _success, bytes memory _ret2) = _control().delegatecall(allocateData);
254+
(bool _success, bytes memory _returnData) = _control().delegatecall(allocateData);
255255
if (!_success) {
256-
bytes memory _err2 = abi.encodePacked(AtlasErrors.AllocateValueDelegatecallFail.selector, _ret2);
256+
bytes memory _err = abi.encodePacked(AtlasErrors.AllocateValueDelegatecallFail.selector, _returnData);
257257
assembly {
258-
revert(add(_err2, 32), mload(_err2))
258+
revert(add(_err, 32), mload(_err))
259259
}
260260
}
261261

0 commit comments

Comments
 (0)