diff --git a/libavformat/oggparsespeex.c b/libavformat/oggparsespeex.c
index 0ac087d7ae48f16a782d335a303b586cb59fba38..140a58a9eb4b0c04eef32cd3886149d96d423b1f 100644
--- a/libavformat/oggparsespeex.c
+++ b/libavformat/oggparsespeex.c
@@ -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;
diff --git a/libavformat/oggparsetheora.c b/libavformat/oggparsetheora.c
index 96c432f9930bc37c3fe25f2c3756923141ec5cb8..e62f288a7d2b885dbe4ad44e0d0f9dfd97d63585 100644
--- a/libavformat/oggparsetheora.c
+++ b/libavformat/oggparsetheora.c
@@ -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;