indygreg / indygreg/python-zstandard
`multi_decompress_to_buffer([])` terminates the process with SIGFPE
Nessuno ha ancora preso questa issue.
- Lingua principale
- C
- Stelle
- 642
- Fork
- 116
- Merge medio
- 1g 14h
- PR unite (30g)
- 5
Descrizione
I've been fuzzing Python C extension modules for a small research project, and this one came up.
It reproduces with the binary wheel from a plain pip install zstandard.
Versions
zstandard 0.25.0 C backend, CPython 3.12.3, Ubuntu 24.04 x86_64, glibc 2.39.
Reproducer
import zstandard
zstandard.ZstdDecompressor().multi_decompress_to_buffer([])
An UBSan build identifies a division by zero at c-ext/decompressor.c:1237.
I would expect an empty frame list to return an empty result or raise an exception rather than terminate the interpreter.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da c-ext/decompressor.c:1237 ed esegui il riproduttore fornito per la lista vuota, preferibilmente con UBSan, per esaminare il percorso della divisione per zero. Controlla i test di decompressione nelle vicinanze e aggiungi la copertura per una lista di frame vuota; il lavoro è completato quando restituisce un risultato vuoto o solleva un’eccezione senza terminare l’interprete.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- c, python
- Ambito
- api, backend
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Attiva
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 78/100