Browse Source

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>
tags/n2.1
Reimar Döffinger Luca Barbato 11 years ago
parent
commit
9a27acae9e
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      libavformat/oggdec.c

+ 5
- 1
libavformat/oggdec.c View File

@@ -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);



Loading…
Cancel
Save