From 3ca8a2328878ebdb203e49d0a060df1b5337a370 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Mon, 15 Oct 2012 15:11:54 +0000 Subject: [PATCH] lavf/audiointerleave: check return value of av_new_packet() Fixes CID733709. Signed-off-by: Paul B Mahol --- libavformat/audiointerleave.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c index 609a5117a3..20323a2c58 100644 --- a/libavformat/audiointerleave.c +++ b/libavformat/audiointerleave.c @@ -84,7 +84,8 @@ static int ff_interleave_new_audio_packet(AVFormatContext *s, AVPacket *pkt, if (!size || (!flush && size == av_fifo_size(aic->fifo))) return 0; - av_new_packet(pkt, size); + if (av_new_packet(pkt, size) < 0) + return AVERROR(ENOMEM); av_fifo_generic_read(aic->fifo, pkt->data, size, NULL); pkt->dts = pkt->pts = aic->dts; @@ -133,11 +134,13 @@ int ff_audio_rechunk_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { AVPacket new_pkt; int ret; - while (ff_interleave_new_audio_packet(s, &new_pkt, i, flush)) { + while ((ret = ff_interleave_new_audio_packet(s, &new_pkt, i, flush)) > 0) { ret = ff_interleave_add_packet(s, &new_pkt, compare_ts); if (ret < 0) return ret; } + if (ret < 0) + return ret; } }