Skip to content

Commit ec36e93

Browse files
fix: STAA-12 remediation commit ii + dev notes
1 parent 2460349 commit ec36e93

File tree

3 files changed

+108
-3
lines changed

3 files changed

+108
-3
lines changed

src/StartaleSmartAccount.sol

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,9 @@ contract StartaleSmartAccount is
312312
}
313313

314314
/// @dev Uninstalls all validators, executors, hooks, and pre-validation hooks.
315-
/// Review: _onRedelegation
315+
/// @notice It is worth noting that, onRedelegation() does not obligate the account to completely wipe out it’s storage.
316+
/// @notice It is an optional action for the account where it could uninitialize the storage variables as much as it can to provide clean storage for new wallet.
317+
/// Review: _onRedelegation. If ERC authors agrees with the change then we could have bytes calldata context as param.
316318
function _onRedelegation() internal override {
317319
_tryUninstallValidators();
318320
_tryUninstallExecutors();
@@ -324,6 +326,7 @@ contract StartaleSmartAccount is
324326
_getPreValidationHook(MODULE_TYPE_PREVALIDATION_HOOK_ERC4337), MODULE_TYPE_PREVALIDATION_HOOK_ERC4337
325327
);
326328
_tryUninstallFallbacks();
329+
// Review: If we maintain banned selectors then clear them as well.
327330
_initSentinelLists();
328331
}
329332

src/core/ModuleManager.sol

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,8 @@ abstract contract ModuleManager is AllStorage, EIP712, IModuleManager {
238238
);
239239
}
240240

241-
/// Review: _tryUninstallValidators
241+
/// Review: _tryUninstallValidators Might as well not call onUninstall() at all
242+
/// Review: separate internal method can be added that accepts an array of data.
242243
/// @dev Uninstalls all validators from the smart account.
243244
/// @dev This function is called in the _onRedelegation function in StartaleSmartAccount.sol
244245
function _tryUninstallValidators() internal {
@@ -274,7 +275,8 @@ abstract contract ModuleManager is AllStorage, EIP712, IModuleManager {
274275
);
275276
}
276277

277-
/// Review: _tryUninstallExecutors
278+
/// Review: _tryUninstallExecutors Might as well not call onUninstall() at all
279+
/// Review: separate internal method can be added that accepts an array of data.
278280
/// @dev Uninstalls all executors from the smart account.
279281
/// @dev This function is called in the _onRedelegation function in StartaleSmartAccount.sol
280282
function _tryUninstallExecutors() internal {
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.29;
3+
4+
import {IERC4337Account} from '../../../src/interfaces/IERC4337Account.sol';
5+
6+
import {
7+
IHook,
8+
IModule,
9+
IPreValidationHookERC1271,
10+
IPreValidationHookERC4337,
11+
IValidator
12+
} from '../../../src/interfaces/IERC7579Module.sol';
13+
import {IAccountConfig} from '../../../src/interfaces/core/IAccountConfig.sol';
14+
import {IExecutionHelper} from '../../../src/interfaces/core/IExecutionHelper.sol';
15+
import {IModuleManager} from '../../../src/interfaces/core/IModuleManager.sol';
16+
import {Test} from 'forge-std/Test.sol';
17+
18+
// import {console} from 'forge-std/console.sol';
19+
20+
contract CalculateSelectors is Test {
21+
function setUp() public {}
22+
23+
function test_calculateSelector() public {
24+
bytes4 selector1 = IERC4337Account.executeUserOp.selector;
25+
// console.log('executeUserOp');
26+
// console.logBytes4(selector1);
27+
28+
bytes4 selector2 = IAccountConfig.supportsModule.selector;
29+
// console.log('supportsModule');
30+
// console.logBytes4(selector2);
31+
32+
bytes4 selector3 = IAccountConfig.supportsExecutionMode.selector;
33+
// console.log('supportsExecutionMode');
34+
// console.logBytes4(selector3);
35+
36+
bytes4 selector4 = IAccountConfig.accountId.selector;
37+
// console.log('accountId');
38+
// console.logBytes4(selector4);
39+
40+
bytes4 selector5 = IExecutionHelper.execute.selector;
41+
// console.log('execute');
42+
// console.logBytes4(selector5);
43+
44+
bytes4 selector6 = IExecutionHelper.executeFromExecutor.selector;
45+
// console.log('executeFromExecutor');
46+
// console.logBytes4(selector6);
47+
48+
bytes4 selector7 = IModuleManager.installModule.selector;
49+
// console.log('installModule');
50+
// console.logBytes4(selector7);
51+
52+
bytes4 selector8 = IModuleManager.uninstallModule.selector;
53+
// console.log('uninstallModule');
54+
// console.logBytes4(selector8);
55+
56+
bytes4 selector9 = IModuleManager.isModuleInstalled.selector;
57+
// console.log('isModuleInstalled');
58+
// console.logBytes4(selector9);
59+
60+
bytes4 selector10 = IModule.onInstall.selector;
61+
// console.log('onInstall');
62+
// console.logBytes4(selector10);
63+
64+
bytes4 selector11 = IModule.onUninstall.selector;
65+
// console.log('onUninstall');
66+
// console.logBytes4(selector11);
67+
68+
bytes4 selector12 = IModule.isModuleType.selector;
69+
// console.log('isModuleType');
70+
// console.logBytes4(selector12);
71+
72+
bytes4 selector13 = IModule.isInitialized.selector;
73+
// console.log('isInitialized');
74+
// console.logBytes4(selector13);
75+
76+
bytes4 selector14 = IPreValidationHookERC1271.preValidationHookERC1271.selector;
77+
// console.log('preValidationHookERC1271');
78+
// console.logBytes4(selector14);
79+
80+
bytes4 selector15 = IPreValidationHookERC4337.preValidationHookERC4337.selector;
81+
// console.log('preValidationHookERC4337');
82+
// console.logBytes4(selector15);
83+
84+
bytes4 selector16 = IValidator.validateUserOp.selector;
85+
// console.log('validateUserOp');
86+
// console.logBytes4(selector16);
87+
88+
bytes4 selector17 = IValidator.isValidSignatureWithSender.selector;
89+
// console.log('isValidSignatureWithSender');
90+
// console.logBytes4(selector17);
91+
92+
bytes4 selector18 = IHook.preCheck.selector;
93+
// console.log('preCheck');
94+
// console.logBytes4(selector18);
95+
96+
bytes4 selector19 = IHook.postCheck.selector;
97+
// console.log('postCheck');
98+
// console.logBytes4(selector19);
99+
}
100+
}

0 commit comments

Comments
 (0)