From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Subject: [FFmpeg-devel] [PATCH 6/7] fftools/ffmpeg_demux: Fix leak on error Date: Sat, 7 Oct 2023 02:40:30 +0200 Message-ID: <AS8P250MB074427DD3617E0BF31C0C2138FC8A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> (raw) In-Reply-To: <AS8P250MB07449BD309DE98BE5A7D6D468FC8A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> An AVFormatContext leaks on errors that happen before it is attached to its permanent place (an InputFile). Fix this by attaching it earlier. Given that it is not documented that avformat_close_input() is usable with an AVFormatContext that has only been allocated with avformat_alloc_context() and not opened with avformat_open_input(), one error path before avformat_open_input() had to be treated specially: It uses avformat_free_context(). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- fftools/ffmpeg_demux.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 41fcb678c6..350f233ab7 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -1462,8 +1462,10 @@ int ifile_open(const OptionsContext *o, const char *filename) if (data_codec_name) ret = err_merge(ret, find_codec(NULL, data_codec_name , AVMEDIA_TYPE_DATA, 0, &ic->data_codec)); - if (ret < 0) + if (ret < 0) { + avformat_free_context(ic); return ret; + } ic->video_codec_id = video_codec_name ? ic->video_codec->id : AV_CODEC_ID_NONE; ic->audio_codec_id = audio_codec_name ? ic->audio_codec->id : AV_CODEC_ID_NONE; @@ -1488,6 +1490,7 @@ int ifile_open(const OptionsContext *o, const char *filename) av_log(d, AV_LOG_ERROR, "Did you mean file:%s?\n", filename); return err; } + f->ctx = ic; av_strlcat(d->log_name, "/", sizeof(d->log_name)); av_strlcat(d->log_name, ic->iformat->name, sizeof(d->log_name)); @@ -1527,10 +1530,8 @@ int ifile_open(const OptionsContext *o, const char *filename) if (ret < 0) { av_log(d, AV_LOG_FATAL, "could not find codec parameters\n"); - if (ic->nb_streams == 0) { - avformat_close_input(&ic); + if (ic->nb_streams == 0) return ret; - } } } @@ -1582,7 +1583,6 @@ int ifile_open(const OptionsContext *o, const char *filename) } } - f->ctx = ic; f->start_time = start_time; f->recording_time = recording_time; f->input_sync_ref = o->input_sync_ref; -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2023-10-07 0:40 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-07 0:37 [FFmpeg-devel] [PATCH 1/7] avcodec/wmv2dec: Parse extradata during init Andreas Rheinhardt 2023-10-07 0:40 ` [FFmpeg-devel] [PATCH 2/7] avcodec/h261dec, vc1dec: Don't set write-only macroblock dimensions Andreas Rheinhardt 2023-10-07 20:34 ` Michael Niedermayer 2023-10-14 20:05 ` Andreas Rheinhardt 2023-10-07 0:40 ` [FFmpeg-devel] [PATCH 3/7] avcodec/h261dec: Don't set write-only picture_number Andreas Rheinhardt 2023-10-11 19:48 ` Andreas Rheinhardt 2023-10-07 0:40 ` [FFmpeg-devel] [PATCH 4/7] avcodec/h261dec: Remove pointless goto Andreas Rheinhardt 2023-10-08 16:40 ` Michael Niedermayer 2023-10-07 0:40 ` [FFmpeg-devel] [PATCH 5/7] fftools/ffmpeg_demux: Don't use fake object with av_opt_eval Andreas Rheinhardt 2023-10-10 11:48 ` Anton Khirnov 2023-10-07 0:40 ` Andreas Rheinhardt [this message] 2023-10-10 11:51 ` [FFmpeg-devel] [PATCH 6/7] fftools/ffmpeg_demux: Fix leak on error Anton Khirnov 2023-10-07 0:40 ` [FFmpeg-devel] [PATCH 7/7] avcodec/h261dec: Discard whole packet when discarding Andreas Rheinhardt 2023-10-07 10:16 ` [FFmpeg-devel] [PATCH 8/8] avcodec/mpeg4video_parser: Don't set write-only current_picture_ptr Andreas Rheinhardt 2023-10-08 16:45 ` [FFmpeg-devel] [PATCH 1/7] avcodec/wmv2dec: Parse extradata during init Michael Niedermayer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=AS8P250MB074427DD3617E0BF31C0C2138FC8A@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git