Skip to content

refactor: revert remove assert_bounded_vec_trimmed#21758

Merged
nchamo merged 1 commit intomerge-train/fairiesfrom
revert/assert-bounded-vec-trimmed
Mar 18, 2026
Merged

refactor: revert remove assert_bounded_vec_trimmed#21758
nchamo merged 1 commit intomerge-train/fairiesfrom
revert/assert-bounded-vec-trimmed

Conversation

@nchamo
Copy link
Contributor

@nchamo nchamo commented Mar 18, 2026

Summary

  • Reverts assert_bounded_vec_trimmed introduced in feat: guard BoundedVec oracle returns against dirty trailing storage #21589. The check runs in unconstrained code, so it produces no constraints and a malicious prover can bypass it. The two BoundedVec-returning oracles (getNotes, tryAes128Decrypt) are already safe because their BoundedVecs never cross directly into constrained code -- they're deconstructed within unconstrained context first.
  • Removes dead if i < notes.len() guard inside a for i in 0..notes.len() loop.

Fixes https://linear.app/aztec-labs/issue/F-468

@nchamo nchamo requested a review from nventuro as a code owner March 18, 2026 18:05
@nchamo nchamo self-assigned this Mar 18, 2026
@nchamo nchamo changed the title revert: remove assert_bounded_vec_trimmed refactor: revert remove assert_bounded_vec_trimmed Mar 18, 2026
@nchamo nchamo merged commit 01919ee into merge-train/fairies Mar 18, 2026
13 of 15 checks passed
@nchamo nchamo deleted the revert/assert-bounded-vec-trimmed branch March 18, 2026 18:40
@AztecBot
Copy link
Collaborator

✅ Successfully backported to backport-to-v4-next-staging #21654.

AztecBot added a commit that referenced this pull request Mar 19, 2026
BEGIN_COMMIT_OVERRIDE
feat: entrypoint replay protection (#21649)
feat: guard BoundedVec oracle returns against dirty trailing storage
(#21589)
fix: add bounds when allocating arrays in deserialization (#21622)
feat: implement manual Packable for structs with sub-Field members
(#21576)
fix(aztec-node): throw on existing nullifier in
getLowNullifierMembershipWitness (#21472)
fix: use trait dispatch for array Packable::unpack in card_game_contract
(#21683)
fix(p2p): penalize peers for errors during response reading (#21680)
fix: update nullifier non-inclusion test expectations after early oracle
throw (backport #21600) (#21615)
fix(aztec-nr): fix OOB index with nonzero offset (#21613)
fix(builder): persist contractsDB across blocks within a checkpoint
(#21520)
fix(stdlib): accept null return_type for void Noir functions (#21647)
feat: gas estimations on send (#21646)
fix(validator): process block proposals from own validator keys in HA
setups (backport #21603) (#21659)
fix(p2p): penalize peer on tx rejected by pool (#21677)
fix(sequencer): fix checkpoint budget redistribution for multi-block
slots (#21692)
feat: sync cache invalidation oracle (backport #21459) (#21730)
feat!: make AES128 decrypt oracle return Option (backport #21696)
(#21735)
feat!: include init_hash in private initialization nullifier (backport
#21427) (#21736)
fix(sequencer): extract gas and blob configs from valid requests only
(A-677) (#21747)
chore: backport #21744 — replace dead BOOTSTRAP_TO env var with
bootstrap.sh build arg (#21748)
refactor: revert remove assert_bounded_vec_trimmed (#21758)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants