commit 980445f08bfee496f4e784b05653e1698addaac8 (tree)
parent 722e066173f5235b1dd1b341acb5cb1e79002ed7
Author: Andrew Kelley <andrew@ziglang.org>
Date: Tue, 26 Aug 2025 20:49:37 -0700
std.compress.lzma: fix unpacked size checking logic
Diffstat:
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/std/compress/lzma2.zig b/lib/std/compress/lzma2.zig
@@ -226,18 +226,19 @@ pub const Decode = struct {
try ld.resetState(allocating.allocator, new_props);
}
+ const expected_unpacked_size = accum.len + unpacked_size;
const start_count = n_read;
var range_decoder = try lzma.RangeDecoder.initCounting(reader, &n_read);
while (true) {
- if (accum.len >= unpacked_size) break;
+ if (accum.len >= expected_unpacked_size) break;
if (range_decoder.isFinished()) break;
switch (try ld.process(reader, allocating, accum, &range_decoder, &n_read)) {
.more => continue,
.finished => break,
}
}
- if (accum.len != unpacked_size) return error.DecompressedSizeMismatch;
+ if (accum.len != expected_unpacked_size) return error.DecompressedSizeMismatch;
if (n_read - start_count != packed_size) return error.CompressedSizeMismatch;
return n_read;