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: Jan Gerber <j@v2v.cc> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
0a14fefd68
commit
9a27acae9e
@ -384,7 +384,11 @@ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize,
|
|||||||
|
|
||||||
if (!complete && os->segp == os->nsegs) {
|
if (!complete && os->segp == os->nsegs) {
|
||||||
ogg->curidx = -1;
|
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);
|
} while (!complete);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user