[FFmpeg-cvslog] Fix possible NULL-pointer dereference when decoding mov files.

Carl Eugen Hoyos git at videolan.org
Sun Nov 18 08:54:56 CET 2012


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Sun Nov 18 08:52:50 2012 +0100| [ab82b77822a781ce8e6705aa6db8c8c1b4630d58] | committer: Carl Eugen Hoyos

Fix possible NULL-pointer dereference when decoding mov files.

Fixes CID743440, introduced in 850e5c0.

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

 libavformat/mov.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 9b179cb..cff9c92 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1384,6 +1384,7 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
         } else if (st->codec->codec_type==AVMEDIA_TYPE_AUDIO) {
             int bits_per_sample, flags;
             uint16_t version = avio_rb16(pb);
+            AVDictionaryEntry *compatible_brands = av_dict_get(c->fc->metadata, "compatible_brands", NULL, AV_DICT_MATCH_CASE);
 
             st->codec->codec_id = id;
             avio_rb16(pb); /* revision level */
@@ -1401,7 +1402,7 @@ int ff_mov_read_stsd_entries(MOVContext *c, AVIOContext *pb, int entries)
             //Read QT version 1 fields. In version 0 these do not exist.
             av_dlog(c->fc, "version =%d, isom =%d\n",version,c->isom);
             if (!c->isom ||
-                strstr(av_dict_get(c->fc->metadata, "compatible_brands", NULL, AV_DICT_MATCH_CASE)->value, "qt  ")) {
+                (compatible_brands && strstr(compatible_brands->value, "qt  "))) {
                 if (version==1) {
                     sc->samples_per_frame = avio_rb32(pb);
                     avio_rb32(pb); /* bytes per packet */



More information about the ffmpeg-cvslog mailing list