io: fix integer overflow in take (#6080)

This commit is contained in:
Alice Ryhl
2023-10-15 20:54:27 +02:00
committed by GitHub
parent a08ad926b1
commit 654a3d5acf
+2 -1
View File
@@ -1,6 +1,7 @@
use crate::io::{AsyncBufRead, AsyncRead, ReadBuf};
use pin_project_lite::pin_project;
use std::convert::TryFrom;
use std::pin::Pin;
use std::task::{Context, Poll};
use std::{cmp, io};
@@ -85,7 +86,7 @@ impl<R: AsyncRead> AsyncRead for Take<R> {
}
let me = self.project();
let mut b = buf.take(*me.limit_ as usize);
let mut b = buf.take(usize::try_from(*me.limit_).unwrap_or(usize::MAX));
let buf_ptr = b.filled().as_ptr();
ready!(me.inner.poll_read(cx, &mut b))?;