Při čtení rozhraní API pro čtení TAR ověřují kontrolní součty hlaviček.

Třída TarReader nyní ověřuje kontrolní součet položek archivu TAR během procesu čtení. Pokud je kontrolní součet položky neplatný, TarReader vyvolá chybu InvalidDataException. Tato změna zlepšuje integritu dat tím, že zajišťuje, aby byly během zpracování zjištěny a označeny poškozené nebo manipulované soubory TAR.

Verze byla představena

.NET 11 Preview 1

Předchozí chování

Dříve při čtení archivu TAR s neplatným kontrolním součtem TarReader ignoroval neshodu kontrolního součtu a pokračoval ve zpracování archivu bez vyvolání výjimky.

Příklad kódu:

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.
}

Pokud soubor bad-cksum.tar TAR obsahoval položku s neplatným kontrolním součtem, kód by položku zpracoval bez jakékoli indikace problému.

Nové chování

Od verze .NET 11 při čtení archivu TAR s neplatným kontrolním součtem vyvolá TarReader výjimku InvalidDataException a zastaví zpracování. Zpráva o výjimce označuje selhání ověření kontrolního součtu.

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Tato změna byla zavedena, aby se zlepšila spolehlivost a zabezpečení System.Formats.Tar knihovny. Ověřením kontrolních součtů TarReader lze zjistit a zabránit použití poškozených nebo manipulovaných souborů TAR a zajistit tak, aby se zpracovávala pouze platná data. Další informace najdete v tématu dotnet/runtime#118577 a dotnet/runtime#117455.

Pokud vaše aplikace spoléhá na TarReader zpracování archivů TAR:

  • Aktualizujte kód tak, aby zpracovával InvalidDataException , který může být vyvolán, když selže ověření kontrolního součtu.
  • Ujistěte se, že jsou zpracovávané soubory TAR platné a mají správné kontrolní součty. Pokud narazíte na selhání kontrolního součtu, ověřte integritu zdrojových souborů TAR.
  • Pokud potřebujete zpracovat soubory TAR s neplatnými kontrolními součty pro konkrétní scénáře, zvažte implementaci vlastního zpracování chyb nebo předběžné zpracování souborů k opravě kontrolních součtů.

Aktualizovaný příklad:

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.
}

Ovlivněná rozhraní API