From 00c1e4a130eb987741939b2eec52418f0c6413c7 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 12 Mar 2026 19:32:10 +0100 Subject: [PATCH] fix: panic on a short read of a float in skipValue --- src/cbor.zig | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/cbor.zig b/src/cbor.zig index a733d58..f545292 100644 --- a/src/cbor.zig +++ b/src/cbor.zig @@ -832,9 +832,18 @@ fn skipValueType(iter: *[]const u8, t: CborType) Error!void { }, 7 => switch (t.type) { // special cbor_magic_null, cbor_magic_false, cbor_magic_true => return, - cbor_magic_float16 => iter.* = iter.*[2..], - cbor_magic_float32 => iter.* = iter.*[4..], - cbor_magic_float64 => iter.* = iter.*[8..], + cbor_magic_float16 => { + if (iter.len < 2) return error.TooShort; + 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, }, }