Ensure that the extradata buffer is padded appripriately in the ogg demuxer.
authorDavid Conrad <lessen42@gmail.com>
Fri, 5 Jun 2009 23:39:11 +0000 (23:39 +0000)
committerDavid Conrad <lessen42@gmail.com>
Fri, 5 Jun 2009 23:39:11 +0000 (23:39 +0000)
Spotted by valgrind.

Originally committed as revision 19119 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/oggparsespeex.c
libavformat/oggparsetheora.c

index 0ac087d..140a58a 100644 (file)
@@ -47,7 +47,8 @@ static int speex_header(AVFormatContext *s, int idx) {
         st->codec->channels = AV_RL32(p + 48);
         st->codec->frame_size = AV_RL32(p + 56);
         st->codec->extradata_size = os->psize;
-        st->codec->extradata = av_malloc(st->codec->extradata_size);
+        st->codec->extradata = av_malloc(st->codec->extradata_size
+                                         + FF_INPUT_BUFFER_PADDING_SIZE);
         memcpy(st->codec->extradata, p, st->codec->extradata_size);
 
         st->time_base.num = 1;
index 96c432f..e62f288 100644 (file)
@@ -106,7 +106,8 @@ theora_header (AVFormatContext * s, int idx)
         vorbis_comment (s, os->buf + os->pstart + 7, os->psize - 8);
     }
 
-    st->codec->extradata = av_realloc (st->codec->extradata, cds);
+    st->codec->extradata = av_realloc (st->codec->extradata,
+                                       cds + FF_INPUT_BUFFER_PADDING_SIZE);
     cdp = st->codec->extradata + st->codec->extradata_size;
     *cdp++ = os->psize >> 8;
     *cdp++ = os->psize & 0xff;