diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2019-08-09 03:43:57 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-04-01 05:34:11 +0200 |
commit | 7464a260983182a1603a8a5923fac0a0f0e17b5f (patch) | |
tree | 9cf76c9e96aacbec92e71211f1d4a01b8a974f4c | |
parent | f4190a49ae2a3b17a12eaf75c1e9c3dfdae3e9e3 (diff) | |
download | ffmpeg-7464a260983182a1603a8a5923fac0a0f0e17b5f.tar.gz |
avformat/audiointerleave: Fix memleak
If ff_interleave_add_packet failed, the content of the newly created
packet new_pkt would leak.
Also, it is unnecessary to zero-initialize a packet that will be put
into av_new_packet lateron as the latter already initializes the packet.
Therefore this has been removed, too.
Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r-- | libavformat/audiointerleave.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c index 2e83031bd6..f10c83d7c9 100644 --- a/libavformat/audiointerleave.c +++ b/libavformat/audiointerleave.c @@ -134,10 +134,12 @@ int ff_audio_rechunk_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt for (i = 0; i < s->nb_streams; i++) { AVStream *st = s->streams[i]; if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { - AVPacket new_pkt = { 0 }; + AVPacket new_pkt; while ((ret = interleave_new_audio_packet(s, &new_pkt, i, flush)) > 0) { - if ((ret = ff_interleave_add_packet(s, &new_pkt, compare_ts)) < 0) + if ((ret = ff_interleave_add_packet(s, &new_pkt, compare_ts)) < 0) { + av_packet_unref(&new_pkt); return ret; + } } if (ret < 0) return ret; |