check that nb_streams is valid before setting stream, fix crash with jp2 which do...
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Tue, 16 Dec 2008 08:47:28 +0000 (08:47 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Tue, 16 Dec 2008 08:47:28 +0000 (08:47 +0000)
Originally committed as revision 16166 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/mov.c

index ff7be4b60dd78edc8cbc31460ad4afea2d8bbe3e..dd44bab15d3ad5960e1e0d67d259300e9bd8740f 100644 (file)
@@ -599,9 +599,14 @@ static int mov_read_enda(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
 /* FIXME modify qdm2/svq3/h264 decoders to take full atom as extradata */
 static int mov_read_extradata(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
 {
-    AVStream *st = c->fc->streams[c->fc->nb_streams-1];
-    uint64_t size= (uint64_t)st->codec->extradata_size + atom.size + 8 + FF_INPUT_BUFFER_PADDING_SIZE;
+    AVStream *st;
+    uint64_t size;
     uint8_t *buf;
+
+    if (c->fc->nb_streams < 1) // will happen with jp2 files
+        return 0;
+    st= c->fc->streams[c->fc->nb_streams-1];
+    size= (uint64_t)st->codec->extradata_size + atom.size + 8 + FF_INPUT_BUFFER_PADDING_SIZE;
     if(size > INT_MAX || (uint64_t)atom.size > INT_MAX)
         return -1;
     buf= av_realloc(st->codec->extradata, size);