Commit ea1e0ce
refactor: ZstdByteSize for ZstdFrameHeader's bounded size fields
Continues the value-object stabilization into ZstdFrameHeader:
- blockSizeMax(): int-masked long -> ZstdByteSize (masked, always non-negative)
- headerSize(): int -> ZstdByteSize (now matches ZstdFrame.headerSize())
frameContentSize() and windowSize() deliberately stay raw long: a hostile
header can make either read back as an unsigned value at or above 2^63 (zstd
copies the content-size field verbatim, and for a single-segment frame sets
windowSize equal to it), which wraps negative in a signed long. Wrapping those
in a non-negative ZstdByteSize would turn ZstdFrame.header() parsing into a
thrown exception on hostile input — a regression the sign-bit test catches.
The typed contentSize() remains the safe view of the content size.
Also resolves the headerSize() asymmetry from the previous PR: ZstdFrame.headerSize()
and ZstdFrameHeader.headerSize() now both return ZstdByteSize and compare directly.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent fb1d9f4 commit ea1e0ce
5 files changed
Lines changed: 27 additions & 13 deletions
File tree
- .github/smoke/src/test/java
- zstd/src
- main/java/io/github/dfa1/zstd
- test/java/io/github/dfa1/zstd
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
184 | 184 | | |
185 | 185 | | |
186 | 186 | | |
187 | | - | |
| 187 | + | |
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
52 | 58 | | |
53 | 59 | | |
54 | 60 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
267 | 267 | | |
268 | | - | |
| 268 | + | |
269 | 269 | | |
270 | 270 | | |
271 | 271 | | |
| |||
Lines changed: 12 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
9 | 17 | | |
10 | 18 | | |
11 | 19 | | |
| |||
16 | 24 | | |
17 | 25 | | |
18 | 26 | | |
19 | | - | |
| 27 | + | |
20 | 28 | | |
21 | | - | |
| 29 | + | |
22 | 30 | | |
23 | 31 | | |
24 | 32 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
172 | 172 | | |
173 | 173 | | |
174 | 174 | | |
175 | | - | |
| 175 | + | |
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
| |||
297 | 297 | | |
298 | 298 | | |
299 | 299 | | |
300 | | - | |
| 300 | + | |
301 | 301 | | |
302 | 302 | | |
303 | 303 | | |
| |||
0 commit comments