mpegvideo: Drop a faulty assert
authorLuca Barbato <lu_zero@gentoo.org>
Tue, 22 Oct 2013 17:17:10 +0000 (19:17 +0200)
committerReinhard Tartler <siretart@tauware.de>
Sun, 5 Jan 2014 22:08:03 +0000 (17:08 -0500)
That check is easily reachable by faulty input.

CC:libav-stable@libav.org
Reported-by: Torsten Sadowski <tsadowski@gmx.net>
(cherry picked from commit 72072bf9de3241848ea86f68d2297b7a5d6ad49b)
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
libavcodec/mpegvideo.c

index 2f65779..eb71670 100644 (file)
@@ -1521,8 +1521,12 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
             s->last_picture_ptr->owner2 = s;
     }
 
-    assert(s->pict_type == AV_PICTURE_TYPE_I || (s->last_picture_ptr &&
-                                                 s->last_picture_ptr->f.data[0]));
+    if (s->pict_type != AV_PICTURE_TYPE_I &&
+        !(s->last_picture_ptr && s->last_picture_ptr->f.data[0])) {
+        av_log(s, AV_LOG_ERROR,
+               "Non-reference picture received and no reference available\n");
+        return AVERROR_INVALIDDATA;
+    }
 
     if (s->picture_structure!= PICT_FRAME && s->out_format != FMT_H264) {
         int i;