Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: correctly check hooks length in installValidation #243

Merged
merged 1 commit into from
Oct 15, 2024

Conversation

adamegyed
Copy link
Contributor

Motivation

We don't actually ever revert with the custom error for exceeding the max hook count because the check addition would overflow before that. The custom error is preferred for visibility into the issue.

Solution

Correctly detect exceeding the length and revert.

@adamegyed adamegyed requested a review from a team October 14, 2024 19:51
Copy link
Collaborator

@jaypaik jaypaik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reason we don't need to enforce this for (non-validation associated) execution hooks again?

src/account/ModuleManagerInternals.sol Outdated Show resolved Hide resolved
@adamegyed
Copy link
Contributor Author

What's the reason we don't need to enforce this for (non-validation associated) execution hooks again?

We don't have a length field tracking it anywhere, so we don't know how long the existing set of hooks is when we're adding to it.

@adamegyed adamegyed force-pushed the adam/call-buffers-sig branch 2 times, most recently from 8c8d350 to e441f28 Compare October 15, 2024 18:30
Base automatically changed from adam/call-buffers-sig to develop October 15, 2024 18:57
Copy link

Summary by Octane

New Contracts

No new contracts were added in this PR.

Updated Contracts

  • ModuleManagerInternals.sol: Updated the hook limit error handling by replacing MAX_PRE_VALIDATION_HOOKS with MAX_VALIDATION_ASSOC_HOOKS and refined limit checks using ValidationAssocHookLimitExceeded.
  • Constants.sol: Renamed MAX_PRE_VALIDATION_HOOKS to MAX_VALIDATION_ASSOC_HOOKS to update terminology.

🔗 Commit Hash: b29be70

Copy link

Contract sizes:

 | Contract                      | Size (B) | Margin (B) |
 |-------------------------------|----------|------------|
 | AccountFactory                |    4,814 |     19,762 |
 | AllowlistModule               |    9,230 |     15,346 |
 | ECDSAValidationModule         |    3,646 |     20,930 |
-| ModularAccount                |   25,574 |       -998 |
+| ModularAccount                |   25,655 |     -1,079 |
 | NativeTokenLimitModule        |    4,714 |     19,862 |
 | PaymasterGuardModule          |    1,797 |     22,779 |
-| SemiModularAccountBytecode    |   27,562 |     -2,986 |
-| SemiModularAccountStorageOnly |   28,080 |     -3,504 |
+| SemiModularAccountBytecode    |   27,553 |     -2,977 |
+| SemiModularAccountStorageOnly |   28,071 |     -3,495 |
 | TimeRangeModule               |    2,000 |     22,576 |
 | WebauthnValidationModule      |    7,854 |     16,722 |

Code coverage:

File % Lines % Statements % Branches % Funcs
src/account/AccountStorageInitializable.sol 89.47% (17/19) 96.15% (25/26) 80.00% (4/5) 100.00% (2/2)
src/account/BaseAccount.sol 87.50% (7/8) 85.71% (6/7) 50.00% (1/2) 100.00% (4/4)
src/account/ModularAccount.sol 100.00% (1/1) 100.00% (1/1) 100.00% (0/0) 100.00% (2/2)
src/account/ModularAccountBase.sol 95.39% (290/304) 93.51% (360/385) 67.80% (40/59) 100.00% (38/38)
src/account/ModularAccountView.sol 100.00% (26/26) 100.00% (33/33) 100.00% (2/2) 100.00% (2/2)
src/account/ModuleManagerInternals.sol 88.10% (111/126) 86.83% (145/167) 50.00% (8/16) 100.00% (12/12)
src/account/SemiModularAccountBase.sol 87.69% (57/65) 91.21% (83/91) 66.67% (10/15) 94.74% (18/19)
src/account/SemiModularAccountBytecode.sol 100.00% (5/5) 100.00% (6/6) 100.00% (1/1) 50.00% (1/2)
src/account/SemiModularAccountStorageOnly.sol 100.00% (4/4) 100.00% (5/5) 100.00% (0/0) 100.00% (2/2)
src/account/TokenReceiver.sol 33.33% (1/3) 33.33% (1/3) 100.00% (0/0) 33.33% (1/3)
src/factory/AccountFactory.sol 70.59% (24/34) 76.09% (35/46) 40.00% (2/5) 58.33% (7/12)
src/libraries/ExecutionLib.sol 98.39% (244/248) 97.18% (241/248) 88.00% (22/25) 100.00% (22/22)
src/libraries/KnownSelectorsLib.sol 100.00% (29/29) 100.00% (64/64) 100.00% (0/0) 100.00% (3/3)
src/libraries/LinkedListSetLib.sol 94.00% (47/50) 96.25% (77/80) 66.67% (4/6) 100.00% (8/8)
src/libraries/MemManagementLib.sol 100.00% (54/54) 100.00% (70/70) 100.00% (0/0) 100.00% (12/12)
src/libraries/SemiModularKnownSelectorsLib.sol 100.00% (6/6) 100.00% (12/12) 100.00% (0/0) 100.00% (1/1)
src/libraries/SparseCalldataSegmentLib.sol 100.00% (17/17) 100.00% (21/21) 100.00% (4/4) 100.00% (4/4)
src/modules/BaseModule.sol 100.00% (13/13) 94.12% (16/17) 100.00% (2/2) 100.00% (3/3)
src/modules/permissions/AllowlistModule.sol 86.05% (74/86) 85.71% (96/112) 78.26% (18/23) 50.00% (9/18)
src/modules/permissions/NativeTokenLimitModule.sol 87.80% (36/41) 89.66% (52/58) 88.89% (8/9) 54.55% (6/11)
src/modules/permissions/PaymasterGuardModule.sol 80.00% (8/10) 66.67% (10/15) 100.00% (2/2) 57.14% (4/7)
src/modules/permissions/TimeRangeModule.sol 83.33% (10/12) 80.00% (16/20) 100.00% (1/1) 75.00% (6/8)
src/modules/validation/ECDSAValidationModule.sol 92.00% (23/25) 81.58% (31/38) 62.50% (5/8) 90.00% (9/10)
src/modules/validation/WebauthnValidationModule.sol 61.11% (11/18) 66.67% (18/27) 100.00% (3/3) 60.00% (6/10)
Total 92.61% (1115/1204) 91.75% (1424/1552) 72.87% (137/188) 84.65% (182/215)

This comment was marked as resolved.

@adamegyed adamegyed merged commit 6d9926d into develop Oct 15, 2024
6 checks passed
@adamegyed adamegyed deleted the adam/fix-install-hooks-count branch October 15, 2024 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants