Skip to content
Snippets Groups Projects
Commit 7ed78cef authored by Dan Burkert's avatar Dan Burkert Committed by Carl Lerche
Browse files

Fix index-oob panic in Take::bytes (#138)

The panic happens when `inner.bytes()` returns a slice smaller than the
limit.
parent aab71ef8
No related branches found
No related tags found
No related merge requests found
...@@ -143,7 +143,8 @@ impl<T: Buf> Buf for Take<T> { ...@@ -143,7 +143,8 @@ impl<T: Buf> Buf for Take<T> {
} }
fn bytes(&self) -> &[u8] { fn bytes(&self) -> &[u8] {
&self.inner.bytes()[..self.limit] let bytes = self.inner.bytes();
&bytes[..cmp::min(bytes.len(), self.limit)]
} }
fn advance(&mut self, cnt: usize) { fn advance(&mut self, cnt: usize) {
......
extern crate bytes;
use bytes::Buf;
use std::io::Cursor;
#[test]
fn long_take() {
// Tests that take with a size greater than the buffer length will not
// overrun the buffer. Regression test for #138.
let buf = Cursor::new(b"hello world").take(100);
assert_eq!(11, buf.remaining());
assert_eq!(b"hello world", buf.bytes());
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment