Skip to content

feat: merge-train/fairies-v5 - #24702

Merged
nventuro merged 1 commit into
v5-nextfrom
merge-train/fairies-v5
Jul 15, 2026
Merged

feat: merge-train/fairies-v5#24702
nventuro merged 1 commit into
v5-nextfrom
merge-train/fairies-v5

Conversation

@AztecBot

Copy link
Copy Markdown
Collaborator

See merge-train-readme.md.
This is a merge-train.

## Problem

Partial-note discovery has four crash points on the completion path,
each reachable by a malicious sender and each firing before the pending
note advances — so every subsequent sync re-hits it and permanently
freezes note sync for that contract:

- a matched completion log yields no note (`panic`),
- a pending note resolves to more than one completion log (`assert`),
- the delivered private half plus the log's public content exceed the
packed-note capacity (`BoundedVec` overflow in the append), or
- the completion log payload is empty, so reading the storage slot is
out of bounds.

The first three are reachable on the canonical token (mismatched content
over the unconstrained delivery channel, completing the same partial
note twice which the token does not prevent, and an over-length
delivered private half); the last needs an attacker-controlled contract
emitting a tag-only log.

## Fix

Make each non-fatal: warn and advance the FSM rather than panicking, so
one bad message cannot break sync. A completion log that cannot yield a
note (empty, over-length, or matching none) is skipped; more than one
completion log completes with the first.

Fixes F-798
@nventuro
nventuro added this pull request to the merge queue Jul 15, 2026
Merged via the queue into v5-next with commit c84e21d Jul 15, 2026
38 checks passed
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