Module: libav Branch: master Commit: 9a27acae9e6b7d0bf74c5b878af9c42495a546f3
Author: Reimar Döffinger <[email protected]> Committer: Luca Barbato <[email protected]> Date: Sun Aug 18 17:40:51 2013 +0200 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: [email protected] Signed-off-by: Jan Gerber <[email protected]> Signed-off-by: Luca Barbato <[email protected]> --- libavformat/oggdec.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index 6514c5b..d22d5bc 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -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); _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
