From c9e681fca3a516899018cfde0b7ea964476b2107 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Sun, 25 Sep 2011 18:35:09 +0300 Subject: demux_mkv: avoid hang with some broken files Return failure to open file in one case that could lead to an infinite loop with broken Matroska files before. --- libmpdemux/demux_mkv.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libmpdemux/demux_mkv.c') diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 85b18319d7..00990f50d4 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -1676,6 +1676,10 @@ static int demux_mkv_open(demuxer_t *demuxer) while (1) { uint32_t id = ebml_read_id(s, NULL); + if (s->eof) { + mp_tmsg(MSGT_DEMUX, MSGL_ERR, "[mkv] Unexpected end of file\n"); + return 0; + } if (id == MATROSKA_ID_CLUSTER) { mp_msg(MSGT_DEMUX, MSGL_V, "[mkv] |+ found cluster, headers are " "parsed completely :)\n"); -- cgit v1.2.3