次の方法で共有


TAR 読み取り API は、読み取り時にヘッダー チェックサムを確認します

TarReader クラスは、読み取りプロセス中に TAR アーカイブ エントリのチェックサムを検証するようになりました。 エントリのチェックサムが無効な場合、 TarReaderInvalidDataExceptionをスローします。 この変更により、破損または改ざんされた TAR ファイルが検出され、処理中にフラグが設定されることで、データの整合性が向上します。

導入されたバージョン

.NET 11 Preview 1

以前の動作

以前は、無効なチェックサムを使用して TAR アーカイブを読み取るときに、チェックサムの不一致を無視し、例外をスローせずにアーカイブの処理を続行 TarReader

コードの例:

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

TAR ファイル bad-cksum.tar 無効なチェックサムを含むエントリが含まれている場合、コードは問題を示さずにエントリを処理します。

新しい動作

.NET 11 以降では、無効なチェックサムで TAR アーカイブを読み取ると、 TarReaderInvalidDataException をスローし、アーカイブの処理を停止します。 例外メッセージは、チェックサム検証エラーを示します。

破壊的変更の種類

この変更は 動作の変更です。

変更の理由

この変更は、 System.Formats.Tar ライブラリの信頼性とセキュリティを向上させるために導入されました。 チェックサムを検証することで、 TarReader は破損または改ざんされた TAR ファイルの使用を検出して防止し、有効なデータのみが処理されるようにすることができます。 詳細については、「 dotnet/runtime#118577 」および 「dotnet/runtime#117455」を参照してください。

アプリケーションが TAR アーカイブの処理に TarReader に依存している場合:

  • チェックサムの検証が失敗した際にスローされる可能性のあるInvalidDataExceptionを処理するようにコードを更新してください。
  • 処理中の TAR ファイルが有効であり、正しいチェックサムを持っていることを確認します。 チェックサムエラーが発生した場合は、ソース TAR ファイルの整合性を確認します。
  • 特定のシナリオで無効なチェックサムを含む TAR ファイルを処理する必要がある場合は、カスタム エラー処理を実装するか、ファイルを前処理してチェックサムを修正することを検討してください。

更新された例:

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

影響を受ける API