diff --git a/src/reader.rs b/src/reader.rs index 19b8aff..a3d8f7d 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -354,15 +354,7 @@ impl<'a, R: Read> Decoder for DecoderReader<'a, R> { fn read_map(&mut self, f: F) -> DecodingResult where F: FnOnce(&mut DecoderReader<'a, R>, usize) -> DecodingResult { - use std::mem::size_of; - use std::usize; let len = try!(self.read_usize()); - if let SizeLimit::Bounded(x) = self.size_limit { - if (len > usize::MAX / size_of::()) || - (len * size_of::()) as u64 > (x - self.read) { - return Err(DecodingError::SizeLimit) - } - } f(self, len) } fn read_map_elt_key(&mut self, _: usize, f: F) -> DecodingResult diff --git a/src/test.rs b/src/test.rs index 28f3a64..818e36e 100644 --- a/src/test.rs +++ b/src/test.rs @@ -335,20 +335,9 @@ fn no_oom() { } let x = encode(&FakeVec { len: 0xffffffffffffffffu64, byte: 1 }, Bounded(10)).unwrap(); - - { - let y : Result, _> = decode_from(&mut Cursor::new(&x[..]), Bounded(10)); - match y { - Err(DecodingError::SizeLimit) => assert!(true), - _ => assert!(false) - } - } - - { - let y : Result, _> = decode_from(&mut Cursor::new(&x[..]), Bounded(10)); - match y { - Err(DecodingError::SizeLimit) => assert!(true), - _ => assert!(false) - } + let y : Result, _> = decode_from(&mut Cursor::new(&x[..]), Bounded(10)); + match y { + Err(DecodingError::SizeLimit) => assert!(true), + _ => assert!(false) } }