From 3c6607eb6f946ed3e108db3f0694cab7e5a5df7e Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 27 Mar 2012 08:21:02 +0200 Subject: [PATCH] avcodec_encode_{audio,video}: only reallocate output packet when it has non-zero size. Otherwise realloc would free it, which would result in double free later. --- libavcodec/utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 7d50bd51d0..aa0f5b6d86 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -960,7 +960,7 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, avctx->frame_size = fs_tmp; } if (!ret) { - if (!user_packet && avpkt->data) { + if (!user_packet && avpkt->size) { uint8_t *new_data = av_realloc(avpkt->data, avpkt->size); if (new_data) avpkt->data = new_data; @@ -1123,7 +1123,7 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx, else if (!(avctx->codec->capabilities & CODEC_CAP_DELAY)) avpkt->pts = avpkt->dts = frame->pts; - if (!user_packet && avpkt->data) { + if (!user_packet && avpkt->size) { uint8_t *new_data = av_realloc(avpkt->data, avpkt->size); if (new_data) avpkt->data = new_data; -- 2.11.0