mirror of https://git.sr.ht/~stygianentity/bincode
Replace use of saturating_add
This commit is contained in:
parent
1e21e5d13b
commit
ce61edb51f
|
|
@ -347,8 +347,15 @@ impl<'a, R: Read> Decoder for DecoderReader<'a, R> {
|
||||||
let len = try!(self.read_usize());
|
let len = try!(self.read_usize());
|
||||||
match self.size_limit {
|
match self.size_limit {
|
||||||
SizeLimit::Infinite => (),
|
SizeLimit::Infinite => (),
|
||||||
SizeLimit::Bounded(x) if self.read.saturating_add(len as u64) <= x => (),
|
SizeLimit::Bounded(x) => {
|
||||||
SizeLimit::Bounded(_) => return Err(DecodingError::SizeLimit),
|
let overflow = match self.read.checked_add(len as u64) {
|
||||||
|
Some(y) => y > x,
|
||||||
|
None => true,
|
||||||
|
};
|
||||||
|
if overflow {
|
||||||
|
return Err(DecodingError::SizeLimit);
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
f(self, len)
|
f(self, len)
|
||||||
}
|
}
|
||||||
|
|
@ -363,8 +370,15 @@ impl<'a, R: Read> Decoder for DecoderReader<'a, R> {
|
||||||
let len = try!(self.read_usize());
|
let len = try!(self.read_usize());
|
||||||
match self.size_limit {
|
match self.size_limit {
|
||||||
SizeLimit::Infinite => (),
|
SizeLimit::Infinite => (),
|
||||||
SizeLimit::Bounded(x) if self.read.saturating_add(len as u64) <= x => (),
|
SizeLimit::Bounded(x) => {
|
||||||
SizeLimit::Bounded(_) => return Err(DecodingError::SizeLimit),
|
let overflow = match self.read.checked_add(len as u64) {
|
||||||
|
Some(y) => y > x,
|
||||||
|
None => true,
|
||||||
|
};
|
||||||
|
if overflow {
|
||||||
|
return Err(DecodingError::SizeLimit);
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
f(self, len)
|
f(self, len)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue