vorbisenc: Check the return value of av_frame_clone
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Fri, 24 Nov 2017 19:24:41 +0000 (19:24 +0000)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Sun, 26 Nov 2017 17:26:59 +0000 (17:26 +0000)
Prevents a segfault when alloc fails.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
libavcodec/vorbisenc.c

index a4ecd8f..18a679f 100644 (file)
@@ -1093,9 +1093,13 @@ static int vorbis_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
     PutBitContext pb;
 
     if (frame) {
+        AVFrame *clone;
         if ((ret = ff_af_queue_add(&venc->afq, frame)) < 0)
             return ret;
-        ff_bufqueue_add(avctx, &venc->bufqueue, av_frame_clone(frame));
+        clone = av_frame_clone(frame);
+        if (!clone)
+            return AVERROR(ENOMEM);
+        ff_bufqueue_add(avctx, &venc->bufqueue, clone);
     } else
         if (!venc->afq.remaining_samples)
             return 0;