Dela via


API:er för TAR-läsning verifierar sidhuvudkontrollsummor vid läsning

Klassen TarReader validerar nu kontrollsumman för TAR-arkivposter under läsprocessen. Om en posts kontrollsumma är ogiltig, TarReader genererar en InvalidDataException. Den här ändringen förbättrar dataintegriteten genom att se till att skadade eller manipulerade TAR-filer identifieras och flaggas under bearbetningen.

Version lanserad

.NET 11 Förhandsversion 1

Tidigare beteende

Tidigare, när du läste ett TAR-arkiv med en ogiltig kontrollsumma, TarReader ignorerade matchningsfelet för kontrollsumman och fortsatte att bearbeta arkivet utan att utlösa ett undantag.

Exempelkod:

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

Om TAR-filen bad-cksum.tar innehåller en post med en ogiltig kontrollsumma skulle koden bearbeta posten utan någon indikation på problemet.

Nytt beteende

Från och med .NET 11, när du läser ett TAR-arkiv med en ogiltig kontrollsumma, kastas InvalidDataException och TarReader slutar bearbeta arkivet. Undantagsmeddelandet anger verifieringsfelet för kontrollsumman.

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändring

Den här ändringen infördes för att förbättra bibliotekets System.Formats.Tar tillförlitlighet och säkerhet. Genom att verifiera kontrollsummor kan du identifiera och förhindra användning av skadade eller manipulerade TAR-filer, vilket säkerställer TarReader att endast giltiga data bearbetas. Mer information finns i dotnet/runtime#118577 och dotnet/runtime#117455.

Om programmet förlitar sig på TarReader att bearbeta TAR-arkiv:

  • Uppdatera koden för att hantera det undantag InvalidDataException som kan kastas när kontrollsummeverifiering misslyckas.
  • Kontrollera att TAR-filerna som bearbetas är giltiga och har rätt kontrollsummor. Om du stöter på kontrollsummafel kontrollerar du integriteten för KÄLL-TAR-filerna.
  • Om du behöver bearbeta TAR-filer med ogiltiga kontrollsummor för specifika scenarier kan du överväga att implementera anpassad felhantering eller förbearbeta filerna för att korrigera kontrollsummorna.

Uppdaterat exempel:

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

Berörda API:er