Skip to content

fix(internet): a framed IGMPv3 Report cut inside a record parses a phantom zero-filled record #2756

Closed

Description

@JarryShaw

Describe the bug
An IPv4-framed IGMPv3 Report whose capture is cut inside record 1, with the IPv4 total length still intact, parses with a second, phantom group record. Record 2 was never captured. It is zero-filled to the frame's declared length: type Unassigned, no sources, plus one SchemaWarning: packet length < 0: -4. If the cut falls 21–23 octets in, the phantom has type MODE_IS_INCLUDE. The rebuild is byte-exact, but info.records lists a record the capture does not contain.

Reproduction
The #2755 cross-review confirmed this on main 1b4f9703e, and on #2755's head as well, so it is not new: cut an IPv4 + IGMPv3 Report 4–15 octets into the Report and parse the frame.

Expected behavior
No record past the captured octets. The cut is recorded as a short read, quietly. This is the frame-side counterpart of the #2711 option-2 ruling: that ruling (no zero-fill past the records present) covers standalone Reports, and frames should follow the same intent. Round-trips stay byte-exact.

Additional context
This is blocked until #2755 lands. Both touch the counted-list path in ListField and Schema.unpack.

Activity

  1. added
    bugIssues reporting a defect (set by the bug report template; a default, not an assessment)
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    on Nov 4, 2026
  2. moved this to Blocked in PyPCAPKiton Nov 4, 2026
  3. added this to the PyPCAPKit v1.6 milestone on Nov 4, 2026
  4. JarryShaw commented on Nov 4, 2026

    @JarryShaw
    OwnerAuthor

    #2755 has merged, so this is unblocked. A fix is in progress on a branch off 453e3886f. In the shared path, no list item should come from octets zero-filled past the capture. The cut is recorded quietly, with byte-exact rebuilds, and the registry is swept for siblings.

  5. added
    wipWork in flight - a covering PR is open or an agent is actively on it
    and removed
    blockedDeferred pending another issue or decision; see the last comment for what unblocks it
    on Nov 4, 2026
  6. moved this from Blocked to WIP in PyPCAPKiton Nov 4, 2026
  7. removed
    wipWork in flight - a covering PR is open or an agent is actively on it
    on Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIssues reporting a defect (set by the bug report template; a default, not an assessment)

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions