Skip to content

Commit 4729624

Browse files
Merge branch 'main' into m/encryption
2 parents 961cd75 + e2245e3 commit 4729624

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

common/src/record/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,9 @@ impl TryFrom<Bytes> for Metered<Record> {
313313
let magic_byte = MagicByte::try_from(buf.get_u8())
314314
.map_err(|msg| InternalRecordError::InvalidValue("MagicByte", msg))?;
315315

316-
let metered_size = buf.get_uint(magic_byte.metered_size_varlen as usize) as usize;
316+
let metered_size =
317+
buf.try_get_uint(magic_byte.metered_size_varlen as usize)
318+
.map_err(|_| InternalRecordError::Truncated("MeteredSize"))? as usize;
317319

318320
Ok(Self {
319321
size: metered_size,
@@ -494,6 +496,16 @@ mod test {
494496
assert_eq!(u8::from(magic_byte), as_u8);
495497
}
496498

499+
#[test]
500+
fn metered_record_truncated_after_magic_byte_returns_error() {
501+
// Magic byte: Envelope (0b0000_0010), metered_size_varlen = 1 → expects 1 more byte.
502+
let truncated = Bytes::from_static(&[0b0000_0010]);
503+
assert_eq!(
504+
Metered::<Record>::try_from(truncated),
505+
Err(InternalRecordError::Truncated("MeteredSize"))
506+
);
507+
}
508+
497509
#[test]
498510
fn test_read_varint() {
499511
let data = [0u8, 0, 0, 1, 0, 0, 0];

0 commit comments

Comments
 (0)