Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

frame decodes past the end of the input and leaves the state there

Offen Anfängerfreundlich
#18 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
74/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
tooling

Rechercherichtung

Beginne bei der frame-Hilfsfunktion in dem Paket, das c.frame und State exponiert; er liest die angekündigte Länge und übergibt dem Sub-Decoder den Puffer, ohne zuerst zu prüfen, dass so viele Bytes folgen. Reproduziere mit State(bytes.fromhex('0501')) und frame(c.uint) und bestätige, dass die Referenz ablehnt. Fertig, wenn diese Eingabe abgelehnt wird, anstatt 1 zurückzugeben, State.remaining nie negativ wird, und der Korpusfall frame-uint-length-past-the-end zusammen mit den vorhandenen Frame-Tests besteht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Found by running the compact-encoding-test conformance corpus against this port.

frame decodes a frame whose announced length is longer than the bytes that follow it, and leaves the state past the end of the buffer rather than refusing:

import compact_encoding as c

s = c.State(bytes.fromhex('0501'))     # a frame announcing 5 bytes, with 1 following
print(c.frame(c.uint).decode(s))       # 1
print(s.start, len(s.buffer))          # 6 2
print(s.remaining)                     # -4

The reference rejects these bytes. remaining going negative is the part that matters beyond the wrong answer: a later read from the same state is working from a position past the buffer, so a truncated or hostile frame corrupts everything decoded after it rather than failing where the problem is.

The corpus case is frame-uint-length-past-the-end, citing the rule frame-rejects-a-length-past-the-end: "a decoder rejects a frame announcing more bytes than follow it, rather than reading the value and leaving off past the end of the input, so 0501 is a rejection and not a 1."

Reading the value inside the announced length and rejecting what runs past it is a separate rule, frame-bounds-its-value, which this port passes.

Vorherrschende Sprache
Python
Sterne
1
Forks
1
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus holepunchto/compact-encoding-python

Alle Issues in holepunchto/compact-encoding-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.