Commit 9a27acae authored by Reimar Döffinger's avatar Reimar Döffinger Committed by Luca Barbato

ogg: Fix potential infinite discard loop

Seeking in certain broken files would cause ogg_read_timestamp
to fail because ogg_packet would go into a state where all packets
of stream 1 would be discarded until the end of the stream.

Bug-Id: 553
CC: libav-stable@libav.org
Signed-off-by: 's avatarJan Gerber <j@v2v.cc>
Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
parent 0a14fefd
......@@ -384,7 +384,11 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
if (!complete && os->segp == os->nsegs) {
ogg->curidx = -1;
os->incomplete = 1;
// Do not set incomplete for empty packets.
// Together with the code in ogg_read_page
// that discards all continuation of empty packets
// we would get an infinite loop.
os->incomplete = !!os->psize;
}
} while (!complete);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment