[FFmpeg-cvslog] matroskadec: check that pointers were initialized before accessing them

Aurelien Jacobs git at videolan.org
Fri May 13 04:46:01 CEST 2011


ffmpeg | branch: master | Aurelien Jacobs <aurel at gnuage.org> | Thu Mar 24 00:28:19 2011 +0100| [9c569ef7129d2e2972a5caa9cc01899a502b4bbf] | committer: Anton Khirnov

matroskadec: check that pointers were initialized before accessing them

Signed-off-by: Aurelien Jacobs <aurel at gnuage.org>
Signed-off-by: Anton Khirnov <anton at khirnov.net>

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

 libavformat/matroskadec.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 0fa94a1..9c11c71 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1084,19 +1084,21 @@ static void matroska_convert_tags(AVFormatContext *s)
         if (tags[i].target.attachuid) {
             MatroskaAttachement *attachment = matroska->attachments.elem;
             for (j=0; j<matroska->attachments.nb_elem; j++)
-                if (attachment[j].uid == tags[i].target.attachuid)
+                if (attachment[j].uid == tags[i].target.attachuid
+                    && attachment[j].stream)
                     matroska_convert_tag(s, &tags[i].tag,
                                          &attachment[j].stream->metadata, NULL);
         } else if (tags[i].target.chapteruid) {
             MatroskaChapter *chapter = matroska->chapters.elem;
             for (j=0; j<matroska->chapters.nb_elem; j++)
-                if (chapter[j].uid == tags[i].target.chapteruid)
+                if (chapter[j].uid == tags[i].target.chapteruid
+                    && chapter[j].chapter)
                     matroska_convert_tag(s, &tags[i].tag,
                                          &chapter[j].chapter->metadata, NULL);
         } else if (tags[i].target.trackuid) {
             MatroskaTrack *track = matroska->tracks.elem;
             for (j=0; j<matroska->tracks.nb_elem; j++)
-                if (track[j].uid == tags[i].target.trackuid)
+                if (track[j].uid == tags[i].target.trackuid && track[j].stream)
                     matroska_convert_tag(s, &tags[i].tag,
                                          &track[j].stream->metadata, NULL);
         } else {



More information about the ffmpeg-cvslog mailing list