From 5d34752424b6da9a518e5373339cbf95ee71df8f Mon Sep 17 00:00:00 2001 From: LRFLEW Date: Fri, 8 Aug 2025 23:30:10 -0500 Subject: [PATCH] Change [De]Compress Asserts to Exceptions (#24933) --- src/openrct2/core/Compression.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/openrct2/core/Compression.cpp b/src/openrct2/core/Compression.cpp index 340b225f86..8a98b4200d 100644 --- a/src/openrct2/core/Compression.cpp +++ b/src/openrct2/core/Compression.cpp @@ -38,7 +38,8 @@ namespace OpenRCT2::Compression bool zlibCompress(IStream& source, uint64_t sourceLength, IStream& dest, ZlibHeaderType header, int16_t level) { - Guard::Assert(sourceLength <= source.GetLength() - source.GetPosition()); + if (sourceLength > source.GetLength() - source.GetPosition()) + throw IOException("Not Enough Data to Compress"); int ret; StreamReadBuffer sourceBuf(source, sourceLength, kZlibChunkSize); @@ -84,7 +85,8 @@ namespace OpenRCT2::Compression bool zlibDecompress(IStream& source, uint64_t sourceLength, IStream& dest, uint64_t decompressLength, ZlibHeaderType header) { - Guard::Assert(sourceLength <= source.GetLength() - source.GetPosition()); + if (sourceLength > source.GetLength() - source.GetPosition()) + throw IOException("Not Enough Data to Deompress"); int ret; StreamReadBuffer sourceBuf(source, sourceLength, kZlibChunkSize); @@ -152,7 +154,8 @@ namespace OpenRCT2::Compression bool zstdCompress(IStream& source, uint64_t sourceLength, IStream& dest, ZstdMetadata metadata, int16_t level) { - Guard::Assert(sourceLength <= source.GetLength() - source.GetPosition()); + if (sourceLength > source.GetLength() - source.GetPosition()) + throw IOException("Not Enough Data to Compress"); size_t ret; StreamReadBuffer sourceBuf(source, sourceLength, ZSTD_CStreamInSize()); @@ -223,7 +226,8 @@ namespace OpenRCT2::Compression bool zstdDecompress(IStream& source, uint64_t sourceLength, IStream& dest, uint64_t decompressLength) { - Guard::Assert(sourceLength <= source.GetLength() - source.GetPosition()); + if (sourceLength > source.GetLength() - source.GetPosition()) + throw IOException("Not Enough Data to Decompress"); size_t ret; StreamReadBuffer sourceBuf(source, sourceLength, ZSTD_DStreamInSize());