From 9c6d14ab84e424bdb99a1a4b499311ecf8687ceb Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt Date: Fri, 17 May 2019 00:30:17 +0200 Subject: avformat/matroskadec: Fix probing of unknown-length headers matroska_probe did not support the case of an unknown-length EBML header at all; given that libavformat's Matroska muxer used to produce such files in the streaming case, support for them has been added. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'libavformat/matroskadec.c') diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 6eab076538..24d3ef2b74 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1519,9 +1519,14 @@ static int matroska_probe(const AVProbeData *p) while (n < size) total = (total << 8) | p->buf[4 + n++]; - /* Does the probe data contain the whole header? */ - if (p->buf_size < 4 + size + total) - return 0; + if (total + 1 == 1ULL << (7 * size)){ + /* Unknown-length header - simply parse the whole buffer. */ + total = p->buf_size - 4 - size; + } else { + /* Does the probe data contain the whole header? */ + if (p->buf_size < 4 + size + total) + return 0; + } /* The header should contain a known document type. For now, * we don't parse the whole header but simply check for the -- cgit v1.2.3