avcodec/utils: Check that the data is complete in avpriv_bprint_to_extradata()
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 25 Nov 2014 13:45:30 +0000 (14:45 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 6 Jan 2015 17:25:50 +0000 (18:25 +0100)
Fixes out of array read
Fixes: asan_heap-oob_4d2250_814_cov_2745172097_JACOsub_capability_tester.jss
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
(cherry picked from commit 3d5d95db3f5d8e2093e9e19d0c46e86f54ed2a5d)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/utils.c

index 85d614a..a30b6d9 100644 (file)
@@ -3601,6 +3601,11 @@ int avpriv_bprint_to_extradata(AVCodecContext *avctx, struct AVBPrint *buf)
     ret = av_bprint_finalize(buf, &str);
     if (ret < 0)
         return ret;
+    if (!av_bprint_is_complete(buf)) {
+        av_free(str);
+        return AVERROR(ENOMEM);
+    }
+
     avctx->extradata = str;
     /* Note: the string is NUL terminated (so extradata can be read as a
      * string), but the ending character is not accounted in the size (in