diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-03-27 08:21:02 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-03-28 09:28:47 +0200 |
commit | 3c6607eb6f946ed3e108db3f0694cab7e5a5df7e (patch) | |
tree | 64d66ba25109f411c41dd4e769ea5e4fc27942ee | |
parent | e2e165c00fa0dd45d2fa9a0863190f112accd387 (diff) | |
download | ffmpeg-3c6607eb6f946ed3e108db3f0694cab7e5a5df7e.tar.gz |
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.
-rw-r--r-- | libavcodec/utils.c | 4 |
1 files 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; |