Skip to content

Commit 8752d80

Browse files
committed
std.compress.zstd.Decompress: fix bytes_written tracking
1 parent da51e94 commit 8752d80

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

lib/std/compress/zstd/Decompress.zig

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,11 +224,6 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
224224
}
225225

226226
if (bytes_written > frame_block_size_max) return error.BlockOversize;
227-
228-
state.decompressed_size += bytes_written;
229-
if (state.frame.content_size) |size| {
230-
if (state.decompressed_size > size) return error.MalformedFrame;
231-
}
232227
},
233228
.reserved => return error.ReservedBlock,
234229
}
@@ -240,6 +235,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
240235
}
241236
}
242237

238+
state.decompressed_size += bytes_written;
239+
243240
if (block_header.last) {
244241
if (state.frame.has_checksum) {
245242
const expected_checksum = try in.takeInt(u32, .little);
@@ -254,6 +251,8 @@ fn readInFrame(d: *Decompress, w: *Writer, limit: Limit, state: *State.InFrame)
254251
}
255252
}
256253
d.state = .new_frame;
254+
} else if (state.frame.content_size) |content_size| {
255+
if (state.decompressed_size > content_size) return error.MalformedFrame;
257256
}
258257

259258
return bytes_written;

0 commit comments

Comments
 (0)