Skip to content

Commit

Permalink
Rollup merge of rust-lang#119991 - kornelski:endless-read, r=the8472
Browse files Browse the repository at this point in the history
Reject infinitely-sized reads from io::Repeat

These calls would always run out of memory.

Related to rust-lang#117925
  • Loading branch information
GuillaumeGomez authored Jan 30, 2024
2 parents 2baa994 + 2251e9a commit 5db5853
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions library/std/src/io/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,16 @@ impl Read for Repeat {
Ok(())
}

/// This function is not supported by `io::Repeat`, because there's no end of its data
fn read_to_end(&mut self, _: &mut Vec<u8>) -> io::Result<usize> {
Err(io::Error::from(io::ErrorKind::OutOfMemory))
}

/// This function is not supported by `io::Repeat`, because there's no end of its data
fn read_to_string(&mut self, _: &mut String) -> io::Result<usize> {
Err(io::Error::from(io::ErrorKind::OutOfMemory))
}

#[inline]
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
let mut nwritten = 0;
Expand Down

0 comments on commit 5db5853

Please sign in to comment.