diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2017-04-12 01:46:30 +0200 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2017-04-13 13:37:10 +0200 |
commit | 9e4a5eb51b9f3b2bff0ef08e0074b7fe4893075d (patch) | |
tree | 806ddad80591f8597fa49f54c8cd72d9fadf1e3f /libavformat/utils.c | |
parent | 19c5fa9eea47d45b5eedce3bff4edeaf83fb3942 (diff) | |
download | ffmpeg-9e4a5eb51b9f3b2bff0ef08e0074b7fe4893075d.tar.gz |
avformat: Free the internal codec context at the end
Avoid a use after free in avformat_find_stream_info.
CC: libav-stable@libav.org
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r-- | libavformat/utils.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c index 8fa89eb790..eaba473914 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2466,11 +2466,6 @@ FF_ENABLE_DEPRECATION_WARNINGS count++; } - // close codecs which were opened in try_decode_frame() - for (i = 0; i < ic->nb_streams; i++) { - st = ic->streams[i]; - avcodec_close(st->internal->avctx); - } for (i = 0; i < ic->nb_streams; i++) { st = ic->streams[i]; avctx = st->internal->avctx; @@ -2570,6 +2565,7 @@ FF_ENABLE_DEPRECATION_WARNINGS find_stream_info_err: for (i = 0; i < ic->nb_streams; i++) { + avcodec_close(ic->streams[i]->internal->avctx); av_freep(&ic->streams[i]->info); av_bsf_free(&ic->streams[i]->internal->extract_extradata.bsf); av_packet_free(&ic->streams[i]->internal->extract_extradata.pkt); |