fix: use a valid 20-byte signer in the gasless module-sender test - #331
Merged
Conversation
The hardcoded literal decoded to 42 bytes, which F-2026-18200's signer-length guard rejects in GetAddressPair before ExecutePayload runs. Red on audit-fixes since #317.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's broken
The
Unit testsjob has been red onaudit-fixessince 2026-08-24, failing on a single test:Eleven commits have landed on top of it, so every audit-fix PR merged since then went in with
testsred.Why
A merge-order collision, 32 minutes wide. Neither production fix is wrong.
6a1403efutils.GetAddressPair. That guard is the fix (module impersonation via variable-length signers).8e28eed6#317's branch was cut before 18200 landed, where a 42-byte signer was still accepted. It was never re-run against the updated base, so the test went red the moment it merged.msgServer.ExecutePayloadcallsutils.GetAddressPair(msg.Signer)as its first statement, so the test died there — before reaching anything it was written to exercise.The fix
Use
testSigner, the valid 20-byte account already defined in the same package (execute_payload_test.go:22), instead of the ad-hoc literal.Worth knowing
TestGaslessExecutePayloadWithModuleSenderexists to assert that gasless module-senderMsgExecutePayloadstill executes end to end after thex/vmVerifySenderhardening. Because it was failing on its first statement, it had never once exercised that invariant. This change doesn't just turn CI green — it makes the guard real for the first time.Verification
Full
./...run with the CI invocation was in progress at time of opening; will confirm on the PR.Follow-up for maintainers
The
testsjob is not blocking merges onaudit-fixes— that's how eleven commits landed on a red job. While the branch is red, any new PR inherits a redtestsjob, so genuinely new breakage looks identical to this and has to be caught by manually diffing against clean base. Worth deciding whether the job should be required.