commit 8752d80c8444249ff6b62e40f918bf53b4bad2b8 (tree)
parent da51e94d5073f3a224b520137c661eb7d02e0cfe
Author: Andrew Kelley <andrew@ziglang.org>
Date: Fri, 25 Jul 2025 13:55:02 -0700
std.compress.zstd.Decompress: fix bytes_written tracking
Diffstat:
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/lib/std/compress/zstd/Decompress.zig b/lib/std/compress/zstd/Decompress.zig
@@ -224,11 +224,6 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
}
if (bytes_written > frame_block_size_max) return error.BlockOversize;
-
- state.decompressed_size += bytes_written;
- if (state.frame.content_size) |size| {
- if (state.decompressed_size > size) return error.MalformedFrame;
- }
},
.reserved => return error.ReservedBlock,
}
@@ -240,6 +235,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
}
}
+ state.decompressed_size += bytes_written;
+
if (block_header.last) {
if (state.frame.has_checksum) {
const expected_checksum = try in.takeInt(u32, .little);
@@ -254,6 +251,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
}
}
d.state = .new_frame;
+ } else if (state.frame.content_size) |content_size| {
+ if (state.decompressed_size > content_size) return error.MalformedFrame;
}
return bytes_written;