avformat/bink: Check return value of av_add_index_entry()
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 17 Feb 2014 22:44:49 +0000 (23:44 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 17 Feb 2014 22:47:05 +0000 (23:47 +0100)
Fixes null pointer dereference
Fixes: cdbf15cbd0a27cee958dd0b8800e452e-signal_sigsegv_737991_2083_cov_317652874_LBSTART.BIK
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/bink.c

index 94990a2..ec9257b 100644 (file)
@@ -81,6 +81,7 @@ static int read_header(AVFormatContext *s)
     uint32_t pos, next_pos;
     uint16_t flags;
     int keyframe;
+    int ret;
 
     vst = avformat_new_stream(s, NULL);
     if (!vst)
@@ -184,8 +185,9 @@ static int read_header(AVFormatContext *s)
             av_log(s, AV_LOG_ERROR, "invalid frame index table\n");
             return AVERROR(EIO);
         }
-        av_add_index_entry(vst, pos, i, next_pos - pos, 0,
-                           keyframe ? AVINDEX_KEYFRAME : 0);
+        if ((ret = av_add_index_entry(vst, pos, i, next_pos - pos, 0,
+                                      keyframe ? AVINDEX_KEYFRAME : 0)) < 0)
+            return ret;
     }
 
     avio_seek(pb, vst->index_entries[0].pos, SEEK_SET);