]> git.sesse.net Git - ffmpeg/commitdiff
mov: Print reason of loci parsing failure
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 16 May 2015 11:50:38 +0000 (13:50 +0200)
committerMartin Storsjö <martin@martin.st>
Thu, 19 May 2016 07:46:45 +0000 (10:46 +0300)
Signed-off-by: Martin Storsjö <martin@martin.st>
libavformat/mov.c

index b4ff4ff513ddae3944fbf8aa3e213ca5bfb856e1..fc57399b9bc818e33a74682d69d0a1c6653d5ead 100644 (file)
@@ -226,8 +226,10 @@ static int mov_metadata_loci(MOVContext *c, AVIOContext *pb, unsigned len)
     double longitude, latitude;
     const char *key = "location";
 
-    if (len < 4 + 2 + 1 + 1 + 4 + 4 + 4)
+    if (len < 4 + 2 + 1 + 1 + 4 + 4 + 4) {
+        av_log(c->fc, AV_LOG_ERROR, "loci too short\n");
         return AVERROR_INVALIDDATA;
+    }
 
     avio_skip(pb, 4); // version+flags
     langcode = avio_rb16(pb);
@@ -235,13 +237,18 @@ static int mov_metadata_loci(MOVContext *c, AVIOContext *pb, unsigned len)
     len -= 6;
 
     len -= avio_get_str(pb, len, buf, sizeof(buf)); // place name
-    if (len < 1)
+    if (len < 1) {
+        av_log(c->fc, AV_LOG_ERROR, "place name too long\n");
         return AVERROR_INVALIDDATA;
+    }
     avio_skip(pb, 1); // role
     len -= 1;
 
-    if (len < 14)
+    if (len < 14) {
+        av_log(c->fc, AV_LOG_ERROR,
+               "loci too short (%u bytes left, need at least %d)\n", len, 14);
         return AVERROR_INVALIDDATA;
+    }
     longitude = ((int32_t) avio_rb32(pb)) / (float) (1 << 16);
     latitude  = ((int32_t) avio_rb32(pb)) / (float) (1 << 16);