fix: panic on a short read of a float in skipValue

This commit is contained in:
CJ van den Berg 2026-03-12 19:32:10 +01:00
parent 9767e2a21b
commit 00c1e4a130
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -832,9 +832,18 @@ fn skipValueType(iter: *[]const u8, t: CborType) Error!void {
}, },
7 => switch (t.type) { // special 7 => switch (t.type) { // special
cbor_magic_null, cbor_magic_false, cbor_magic_true => return, cbor_magic_null, cbor_magic_false, cbor_magic_true => return,
cbor_magic_float16 => iter.* = iter.*[2..], cbor_magic_float16 => {
cbor_magic_float32 => iter.* = iter.*[4..], if (iter.len < 2) return error.TooShort;
cbor_magic_float64 => iter.* = iter.*[8..], iter.* = iter.*[2..];
},
cbor_magic_float32 => {
if (iter.len < 4) return error.TooShort;
iter.* = iter.*[4..];
},
cbor_magic_float64 => {
if (iter.len < 8) return error.TooShort;
iter.* = iter.*[8..];
},
else => return error.InvalidType, else => return error.InvalidType,
}, },
} }