[FFmpeg-cvslog] avformat/mov: Check av_add_index_entry() return value

Michael Niedermayer git at videolan.org
Mon Feb 23 22:58:54 CET 2015


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Feb 23 22:47:49 2015 +0100| [4d1b017c380e3794cd938009faab356390cbe0ad] | committer: Michael Niedermayer

avformat/mov: Check av_add_index_entry() return value

Fixes NULL pointer dereference
Fixes: signal_sigsegv_b060e0_3794_cov_1293954059_vc1-wmapro.ism

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4d1b017c380e3794cd938009faab356390cbe0ad
---

 libavformat/mov.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index f70ec61..3d68ac8 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -3218,9 +3218,12 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
                                   MOV_FRAG_SAMPLE_FLAG_DEPENDS_YES));
         if (keyframe)
             distance = 0;
-        av_add_index_entry(st, offset, INT64_MAX/2, sample_size, distance,
-                           keyframe ? AVINDEX_KEYFRAME : 0);
-        st->index_entries[st->nb_index_entries - 1].timestamp = cts;
+        err = av_add_index_entry(st, offset, INT64_MAX/2, sample_size, distance,
+                                 keyframe ? AVINDEX_KEYFRAME : 0);
+        if (err < 0) {
+            av_log(c->fc, AV_LOG_ERROR, "Failed to add index entry\n");
+        } else
+            st->index_entries[st->nb_index_entries - 1].timestamp = cts;
         av_dlog(c->fc, "AVIndex stream %d, sample %d, offset %"PRIx64", cts %"PRId64", "
                 "size %d, distance %d, keyframe %d\n", st->index, sc->sample_count+i,
                 offset, cts, sample_size, distance, keyframe);



More information about the ffmpeg-cvslog mailing list