summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demux/demux_mkv.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index f4f78bc70c..5f1e2a5c0a 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -1788,7 +1788,10 @@ static int read_mkv_segment_header(demuxer_t *demuxer)
mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] (skipping)\n");
if (len == EBML_UINT_INVALID)
break;
- if (!stream_seek(s, stream_tell(s) + len)) {
+ int64_t next = stream_tell(s) + len;
+ if (next >= s->end_pos)
+ return 0;
+ if (!stream_seek(s, next)) {
mp_msg(MSGT_DEMUX, MSGL_WARN, "[mkv] Failed to seek in file\n");
return 0;
}