diff options
author | Aman Gupta <aman@tmm1.net> | 2017-03-15 22:53:04 +0300 |
---|---|---|
committer | Aman Gupta <aman@tmm1.net> | 2017-11-16 05:14:40 +0300 |
commit | ff8f40a63092b184d7fe4416660adbba8d90849d (patch) | |
tree | 37d66dd5904fd486082dc73503b6eea6487a4e14 /libavcodec/mpeg12dec.c | |
parent | 3f1a540204a8c187f77b3805d2e1c97fa916a12b (diff) |
avcodec/mpeg12dec: ensure a53_caption_size is reset on malloc failures
Signed-off-by: Aman Gupta <aman@tmm1.net>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/mpeg12dec.c')
-rw-r--r-- | libavcodec/mpeg12dec.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index e2a7c3f2e0..d5bc5f21b2 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -2235,8 +2235,11 @@ static int mpeg_decode_a53_cc(AVCodecContext *avctx, av_freep(&s1->a53_caption); s1->a53_caption_size = cc_count * 3; s1->a53_caption = av_malloc(s1->a53_caption_size); - if (s1->a53_caption) + if (!s1->a53_caption) { + s1->a53_caption_size = 0; + } else { memcpy(s1->a53_caption, p + 7, s1->a53_caption_size); + } avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; } return 1; @@ -2253,7 +2256,9 @@ static int mpeg_decode_a53_cc(AVCodecContext *avctx, av_freep(&s1->a53_caption); s1->a53_caption_size = cc_count * 3; s1->a53_caption = av_mallocz(s1->a53_caption_size); - if (s1->a53_caption) { + if (!s1->a53_caption) { + s1->a53_caption_size = 0; + } else { uint8_t field, cc1, cc2; uint8_t *cap = s1->a53_caption; for (i = 0; i < cc_count && get_bits_left(&gb) >= 26; i++) { @@ -2317,7 +2322,9 @@ static int mpeg_decode_a53_cc(AVCodecContext *avctx, av_freep(&s1->a53_caption); s1->a53_caption_size = cc_count * 6; s1->a53_caption = av_malloc(s1->a53_caption_size); - if (s1->a53_caption) { + if (!s1->a53_caption) { + s1->a53_caption_size = 0; + } else { uint8_t field1 = !!(p[4] & 0x80); uint8_t *cap = s1->a53_caption; p += 5; |