avcodec/dirac_parser: Add basic validity checks for next_pu_offset and prev_pu_offset
authorMichael Niedermayer <michael@niedermayer.cc>
Sat, 5 Dec 2015 16:14:36 +0000 (17:14 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Sat, 5 Dec 2015 16:42:45 +0000 (17:42 +0100)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/dirac_parser.c

index 12f1a60..c7c4b69 100644 (file)
@@ -114,6 +114,15 @@ static int unpack_parse_unit(DiracParseUnit *pu, DiracParseContext *pc,
     if (pu->pu_type == 0x10 && pu->next_pu_offset == 0)
         pu->next_pu_offset = 13;
 
+    if (pu->next_pu_offset && pu->next_pu_offset < 13) {
+        av_log(NULL, AV_LOG_ERROR, "next_pu_offset %d is invalid\n", pu->next_pu_offset);
+        return 0;
+    }
+    if (pu->prev_pu_offset && pu->prev_pu_offset < 13) {
+        av_log(NULL, AV_LOG_ERROR, "prev_pu_offset %d is invalid\n", pu->prev_pu_offset);
+        return 0;
+    }
+
     return 1;
 }