From 78216eb6ee6d7972e31a484d56399500bcfab190 Mon Sep 17 00:00:00 2001 From: Roderick van Domburg Date: Thu, 13 Jan 2022 19:12:48 +0100 Subject: [PATCH] Prevent seek before offset --- playback/src/player.rs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/playback/src/player.rs b/playback/src/player.rs index 944009b9..23d04c8a 100644 --- a/playback/src/player.rs +++ b/playback/src/player.rs @@ -2195,19 +2195,20 @@ impl Seek for Subfile { fn seek(&mut self, pos: SeekFrom) -> io::Result { let pos = match pos { SeekFrom::Start(offset) => SeekFrom::Start(offset + self.offset), - x => x, + SeekFrom::End(offset) => { + if (self.length as i64 - offset) < self.offset as i64 { + return Err(io::Error::new( + io::ErrorKind::InvalidInput, + "newpos would be < self.offset", + )); + } + pos + } + _ => pos, }; let newpos = self.stream.seek(pos)?; - - if newpos >= self.offset { - Ok(newpos - self.offset) - } else { - Err(io::Error::new( - io::ErrorKind::UnexpectedEof, - "newpos < self.offset", - )) - } + Ok(newpos - self.offset) } }