From 9835e2ae736235810b4ea1c162ca5e65c547e770 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 18 May 2024 04:49:50 +0200 Subject: Merging upstream version 1.71.1+dfsg1. Signed-off-by: Daniel Baumann --- vendor/bincode/src/config/trailing.rs | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 vendor/bincode/src/config/trailing.rs (limited to 'vendor/bincode/src/config/trailing.rs') diff --git a/vendor/bincode/src/config/trailing.rs b/vendor/bincode/src/config/trailing.rs new file mode 100644 index 000000000..6052fc7d7 --- /dev/null +++ b/vendor/bincode/src/config/trailing.rs @@ -0,0 +1,37 @@ +use de::read::SliceReader; +use {ErrorKind, Result}; + +/// A trait for erroring deserialization if not all bytes were read. +pub trait TrailingBytes { + /// Checks a given slice reader to determine if deserialization used all bytes in the slice. + fn check_end(reader: &SliceReader) -> Result<()>; +} + +/// A TrailingBytes config that will allow trailing bytes in slices after deserialization. +#[derive(Copy, Clone)] +pub struct AllowTrailing; + +/// A TrailingBytes config that will cause bincode to produce an error if bytes are left over in the slice when deserialization is complete. + +#[derive(Copy, Clone)] +pub struct RejectTrailing; + +impl TrailingBytes for AllowTrailing { + #[inline(always)] + fn check_end(_reader: &SliceReader) -> Result<()> { + Ok(()) + } +} + +impl TrailingBytes for RejectTrailing { + #[inline(always)] + fn check_end(reader: &SliceReader) -> Result<()> { + if reader.is_finished() { + Ok(()) + } else { + Err(Box::new(ErrorKind::Custom( + "Slice had bytes remaining after deserialization".to_string(), + ))) + } + } +} -- cgit v1.2.3