Skip to content

xdr3: clarify intentional design of makeArrayPayload in decode limits test#28

Closed
Copilot wants to merge 3 commits into
reduce-allocationsfrom
copilot/sub-pr-22-please-work
Closed

xdr3: clarify intentional design of makeArrayPayload in decode limits test#28
Copilot wants to merge 3 commits into
reduce-allocationsfrom
copilot/sub-pr-22-please-work

Conversation

Copilot AI commented Mar 11, 2026

Copy link
Copy Markdown

A reviewer flagged makeArrayPayload as incorrectly encoding element count vs. byte length, suggesting the test didn't exercise its intended paths. The design is intentional: the declared element count in the 4-byte header far exceeds elements that actually fit in the payload, simulating a malicious/malformed input that claims a huge array to provoke unbounded allocation.

Changes

  • xdr3/decode_limits_test.go: Expanded the makeArrayPayload doc comment to explicitly document that the header/data mismatch is deliberate — the decoder must rely on MaxOutputBytes to cap memory before encountering EOF while reading element data.

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

tamirms and others added 2 commits March 11, 2026 12:53
… limits

Add a MaxOutputBytes field to DecodeOptions that tracks cumulative
decoded output size across a single decode operation. Before each
allocation (array element, union arm, optional field, opaque data),
the size is added to a running total; if it exceeds MaxOutputBytes
the decode is aborted with ErrOutputBytesExceeded.

Key changes:
- Add TrackOutputBytes method and TrackOutputBytesOf[T] generic helper
- Cap array pre-allocation at 256 elements, growing via append beyond that
- Track allocations in DecodeFixedOpaque, decodeArray, decodeUnion,
  decodeMap, and allocPtrIfNil
- Bump minimum Go version to 1.25 for generics support

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: tamirms <1445829+tamirms@users.noreply.github.com>
Copilot AI changed the title [WIP] Address feedback on MaxOutputBytes decode option xdr3: clarify intentional design of makeArrayPayload in decode limits test Mar 11, 2026
@tamirms tamirms force-pushed the reduce-allocations branch from 112f917 to c677e1b Compare March 11, 2026 18:52
@tamirms

tamirms commented Mar 11, 2026

Copy link
Copy Markdown

Closing — improvements from this PR have been incorporated into #22 where applicable. Thank you!

@tamirms tamirms closed this Mar 11, 2026
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