diff --git a/mavlink-core/src/peek_reader.rs b/mavlink-core/src/peek_reader.rs
index 47eb874cb1723aff6e6f4cab88bb305c86c269ae..8b316d7ad032da2a0985e6884db6f99b382e16c4 100644
--- a/mavlink-core/src/peek_reader.rs
+++ b/mavlink-core/src/peek_reader.rs
@@ -134,6 +134,12 @@ impl<R: Read, const BUFFER_SIZE: usize> PeekReader<R, BUFFER_SIZE> {
             // read needed bytes from reader
             let bytes_read = self.reader.read(&mut buf[..bytes_to_read])?;
 
+            if bytes_read == 0 {
+                return Err(MessageReadError::Io(
+                    std::io::ErrorKind::UnexpectedEof.into(),
+                ));
+            }
+
             // if some bytes were read, add them to the buffer
 
             if self.buffer.len() - self.top < bytes_read {