Partekatu bidez


Las API de lectura de TAR comprueban las sumas de comprobación de encabezado al leer

Ahora la clase TarReader valida la suma de comprobación de las entradas en el archivo TAR durante el proceso de lectura. Si la suma de comprobación de una entrada no es válida, TarReader lanza una InvalidDataException. Este cambio mejora la integridad de los datos asegurándose de que los archivos TAR dañados o alterados se detectan y marcan durante el procesamiento.

Versión introducida

.NET 11 Preview 1

Comportamiento anterior

Anteriormente, al leer un archivo TAR con una suma de comprobación no válida, TarReader omitió la falta de coincidencia de la suma de comprobación y continuó procesando el archivo sin producir una excepción.

Código de ejemplo:

using System.Formats.Tar;
using System.IO;

using var stream = File.OpenRead("bad-cksum.tar");
using var reader = new TarReader(stream);

while (reader.GetNextEntry() is not null)
{
    // Process entries, even if the checksum is invalid.
}

Si el archivo bad-cksum.tar TAR contenía una entrada con una suma de comprobación no válida, el código procesaría la entrada sin ninguna indicación del problema.

Nuevo comportamiento

A partir de .NET 11, al leer un archivo TAR con una suma de comprobación no válida, TarReader lanza un InvalidDataException y detiene la lectura del archivo. El mensaje de excepción indica el fallo de validación de checksum.

Tipo de cambio disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

Este cambio se introdujo para mejorar la confiabilidad y la seguridad de la System.Formats.Tar biblioteca. Al validar las sumas de comprobación, TarReader puede detectar y evitar el uso de archivos TAR dañados o alterados, lo que garantiza que solo se procesen los datos válidos. Para obtener más información, consulte dotnet/runtime#118577 y dotnet/runtime#117455.

Si la aplicación se basa en TarReader para procesar los archivos TAR:

  • Actualice el código para controlar el InvalidDataException que podría producirse cuando falle la validación de la suma de comprobación.
  • Asegúrese de que los archivos TAR que se procesan son válidos y tienen sumas de comprobación correctas. Si encuentra errores de suma de comprobación, verifique la integridad de los archivos TAR de origen.
  • Si necesita procesar archivos TAR con sumas de comprobación no válidas para escenarios específicos, considere la posibilidad de implementar el control de errores personalizado o preprocesar los archivos para corregir las sumas de comprobación.

Ejemplo actualizado:

using System.Formats.Tar;
using System.IO;

try
{
    using var stream = File.OpenRead("archive.tar");
    using var reader = new TarReader(stream);

    while (reader.GetNextEntry() is not null)
    {
        // Process entries.
    }
}
catch (InvalidDataException ex)
{
    Console.WriteLine($"Error reading TAR archive: {ex.Message}");
    // Handle invalid checksum scenario.
}

Las APIs afectadas