Un tarball que se extrae de 8 formas distintas según la herramienta

The Hardest Tarball?

Un archivo creado con una sola invocación de GNU tar que, al extraerlo, produce resultados radicalmente distintos según la herramienta: desde archivos con contenidos alterados hasta directorios inesperados o errores de decodificación. El truco explota la ambigüedad de POSIX sobre el tamaño de los hard links y los encabezados pax. Forma parte de una colección de 134 tarballs problemáticos que el autor clasifica en su suite de pruebas tar-minefield.

Creo que esto es lo mejor que se puede hacer, aunque técnicamente no cumpla con POSIX.
  1. Joker_vD

    > Ahora bien, POSIX dice que los bloques de datos de un enlace duro "pueden incluirse" en los archivos pax, pero las implicaciones de esto no están del todo claras.

    ¿Cómo es eso? Si se incluyen los bloques de datos, entonces esos son el contenido previsto del archivo detrás de ese enlace duro. Deberían sobrescribir el contenido anterior del archivo.

    > Así que los 512 bytes después del enlace duro son sus datos, ¿y no la cabecera de vacío como lo archivamos?

    Sí, exactamente.

    > ¿Cómo puede un enlace duro tener contenidos diferentes de su archivo contraparte anterior?

    Pues, muy sencillo: mientras se creaba el archivo, el archivo detrás de los dos enlaces duros diferentes cambió; la utilidad de archivado se dio cuenta e incluyó el nuevo contenido del archivo como contenido para el segundo enlace duro en lugar de rebobinar y sobrescribir el archivo original en el archivo (lo cual sería imposible de hacer en una cinta, ya sabes). Al menos creo que esa era la razón de ser de esta concesión, y el comportamiento previsto en la extracción.

  2. JdeBP

    Falta una implementación prominente de tar. paxmirabilis es tar, cpio y pax todo en uno, como un binario de múltiples llamadas. De hecho, es lo que uno obtiene como pax en Debian.

    * https://mbsd.evolvis.org/pax.htm

    * https://manpages.debian.org/trixie/pax/index.html

    No, no es el bsdtar de libarchive. Hay más de un tar en el mundo BSD.

  3. bartvk

    Este tipo, qué héroe. Incluso incluyó un pequeño gráfico para mostrar cómo se ve este "tarball más difícil".

    Al final, hay un enlace a muchos más casos límite.

    Me recuerda a esta belleza: "Parsing JSON is a Minefield"

    https://news.ycombinator.com/item?id=16897061

  4. molticrystal

    >NET, Julia y el tar-codec de uv: estas implementaciones rechazan el tarball. Creo que es lo mejor que se puede hacer, aunque técnicamente no cumpla con POSIX.

    Aunque esta es la opción más segura, es la menos útil; siempre preferiría obtener algo de un archivo que nada. El daño o la irregularidad de un archivo no debería impedir la inspección de datos, solo una advertencia y una forma de retroceder con salvedades sobre lo que se puede extraer.

  5. zahlman

    > Este tarball es uno de los 134 tarballs complicados que estoy recopilando y categorizando en mi suite de pruebas haampie/tar-minefield

    ¿Seguro que "tarpit" no es un nombre más natural?

Más de este día

2026-11-10