[FFmpeg-cvslog] avcodec/jacosubdec: add some memory checks

Clément Bœsch git at videolan.org
Sun Sep 21 18:45:56 CEST 2014


ffmpeg | branch: master | Clément Bœsch <u at pkh.me> | Sat Sep 20 21:48:13 2014 +0200| [4c85073044a6cb4c28210ebece9013947ea84a04] | committer: Clément Bœsch

avcodec/jacosubdec: add some memory checks

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

 libavcodec/jacosubdec.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/libavcodec/jacosubdec.c b/libavcodec/jacosubdec.c
index b64fac8..bb9d6aa 100644
--- a/libavcodec/jacosubdec.c
+++ b/libavcodec/jacosubdec.c
@@ -168,6 +168,7 @@ static void jacosub_to_ass(AVCodecContext *avctx, AVBPrint *dst, const char *src
 static int jacosub_decode_frame(AVCodecContext *avctx,
                                 void *data, int *got_sub_ptr, AVPacket *avpkt)
 {
+    int ret;
     AVSubtitle *sub = data;
     const char *ptr = avpkt->data;
 
@@ -176,7 +177,6 @@ static int jacosub_decode_frame(AVCodecContext *avctx,
 
     if (*ptr) {
         AVBPrint buffer;
-        char *dec_sub;
 
         // skip timers
         ptr = jss_skip_whitespace(ptr);
@@ -185,9 +185,10 @@ static int jacosub_decode_frame(AVCodecContext *avctx,
 
         av_bprint_init(&buffer, JSS_MAX_LINESIZE, JSS_MAX_LINESIZE);
         jacosub_to_ass(avctx, &buffer, ptr);
-        av_bprint_finalize(&buffer, &dec_sub);
-        ff_ass_add_rect(sub, dec_sub, avpkt->pts, avpkt->duration, 0);
-        av_free(dec_sub);
+        ret = ff_ass_add_rect_bprint(sub, &buffer, avpkt->pts, avpkt->duration, 0);
+        av_bprint_finalize(&buffer, NULL);
+        if (ret < 0)
+            return ret;
     }
 
 end:



More information about the ffmpeg-cvslog mailing list