diff --git a/libavformat/utils.c b/libavformat/utils.c
index 3ea0ebd9d6bda11432c341470ce66da6eb8e7beb..ce715f725cb043a4d751aa390a17435715a69fb1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2525,6 +2525,11 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c)
     }
 
     st->codec = avcodec_alloc_context3(c);
+    if (!st->codec) {
+        av_free(st->info);
+        av_free(st);
+        return NULL;
+    }
     if (s->iformat) {
         /* no default bitrate if decoding */
         st->codec->bit_rate = 0;