Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Footgun with the `compressobj()` API

Abierto
#182 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 4 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
c, python
Área
api

Línea de trabajo

Comienza reproduciendo las llamadas intercaladas a compressobj() del issue y, después, inspecciona las implementaciones de ZstdCompressor y compressobj. Se considerará terminado cuando las operaciones posteriores sobre un compressobj más antiguo sean rechazadas después de crear otro objeto y la assertion indicada deje de fallar.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

The fact that you can create multiple compressobj from a single ZstdCompressor allows for foot-guns such as:

a = zstandard.ZstdCompressor()

b = a.compressobj()
c = b.compress(b"prefix")

d = a.compressobj()
e = d.compress(b"foo")
e += d.flush(zstandard.FLUSH_BLOCK)

c = b.compress(b"foo")
c += b.flush(zstandard.FLUSH_BLOCK)

assert(c != e) # Assertion fails!

The API should protect users from interleaving usages of two compressobj. This could be accomplished via a counter that is atomically incremented in the ZstdCompressor. The compressobj would know what count it was created on and throw an error if compress() or flush() are called after the counter in the parent ZstdCompressor is incremented.

Thanks @thatch for identifying this issue and proposing the fix.

Lenguaje dominante
C
Estrellas
641
Forks
117
Merge medio
8 d 2 h
PR fusionados (30 d)
7

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de indygreg/python-zstandard

Todos los issues de indygreg/python-zstandard

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.