From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 2E5E64CE67 for ; Fri, 31 Oct 2025 19:06:58 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'MbIId7eHVbyvkG76xStvb1sofvsDrt1/hld2dMJjXVU=', expected b'YnjYEl5ffddL7mKE4Zc6KEpV8G/QF0DxJvMwRrqHTK8=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1761937607; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=MbIId7eHVbyvkG76xStvb1sofvsDrt1/hld2dMJjXVU=; b=gdvFDiO6tCjAjGqblrU+Gz0PffN9wkU/2QSanVO0m2Pa3Cio6j9QUyujQBuu033WGXDOM C8p/gWpV7vwcdvUlu3nGoQAHIrE7EmyOMDR2X6iuCUVEbjhZhRdd9y6g+ZJWeffXUeXli76 REIKrXeNc3PPl7nRhoBxHNeV44JGEwbP4SxCOW1numpJaMoYvtD7hQhC9VABfDW1KA9T+lx jD/oFSuvRhnLrYKsHeIpTXlvG99+maZBAv9RSRoIil9Ys7gpAUWQmMenkVjfOCD1UQgcn/X oXCwYRQw9ZlwVOsNApCMr14DVsjcoKxI9i0Owi4W/slarZcuPvIhqCstfo3Q== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id C3CEC68F987; Fri, 31 Oct 2025 21:06:47 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1761937588; b=EWe1PyUjHUZbBHoVKq2gT31rRlwZEimBjgc8WLozghbPvgV+WQh8dGucnWwD8dEn2YaWi xPFsP2JD9Ps/rUiEMwyDIxXlGHRP3P0IqcK1IOXlQQPVJRZyRbvAiWniTLiX7zdjvelUQna FNcIv6dlj8RRNA3vYAZs+fh9urf9dY4DdkPycNSKr24ZLOQ8rfhbcad4cvJHo6xLBpSco9P 9psmL8FukYkuhvlszoqXhLAJE0I3PxBE9PqeuFuYDqnSAi3NjF8kAiP8n1GVILB+jFBTv0K IFJzJh4ZVp2zfz1ylFXQUOuvaZON3OOEGCYrTbeDFPKZ9xWROuNRPT86O69Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1761937588; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=3teqLqLD5swcvsOTLOxLY2ACf/IAUiv+E6wSaLAQe8k=; b=j82sKYzeP51mnpZrZYLOKl45fpHCQZPtQjIfpwlhE2wD7cL2ZEYjUUJ1QekItaKjZwU4q z4CXIwF7bkG424Rbo9f9L5qlA5Tf5rBAvmTcO6MmaCHSjD6TLMGl4KiQuunoMELhG55CM9j 06lTrIDRU0WP+23U+4lSf9xYMjAlpyyDFmNHvoAaSEgeMKxxAiy8oJWDLzN+SLggDLSJh3d jFwbrvHirraovGQVKHVhOhX8JLmOs6fkqVB1/s6TPIJxJk7ed3jBvUaGR6s/BM1licWSkiv OGRhEBdHDQMLoJxEsbafcTSLKynWoZRltzW235yEhzPBCbCSrcZvNNuEvEMw== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1761937582; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=YnjYEl5ffddL7mKE4Zc6KEpV8G/QF0DxJvMwRrqHTK8=; b=UH8pdziecwpSI+iUOsIUTFFL59LhiHOR5q61prC4vXIqMSi37Lb98ULLsKSd/V7DsUE/L YRw1mXed9WsKRFcYihMC7oJHXecg+B1b7Q7CSwUBQdrDSwegziip+BkKKQqwqsM2Xv3DPXk QX0BrBwIe96fh3Ey/HEqWMXO247co18FGnqdgyf53KQUDgkdqxBwRomA3ZL5c7z00HGHYL9 kB1CMXMYK/Hop0uO4veouDwsRRsriEb6XhVppzUZEoE4tkthx8KJLhB2kyRs/ZOiXpPiz8N bZD83oB4b/hdqG0nxUkH5Oa87xDYLkqsrlJj8kXCtTcDgpxjB4/8g+ilTlGA== Received: from 02c22a36bd31 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 7272C68F95D for ; Fri, 31 Oct 2025 21:06:22 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Fri, 31 Oct 2025 19:06:22 -0000 Message-ID: <176193758256.25.3876216750431828639@2cb04c0e5124> Message-ID-Hash: 5Y7ZMAON5S45KTVLQIB76YKH4IICWOSS X-Message-ID-Hash: 5Y7ZMAON5S45KTVLQIB76YKH4IICWOSS X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] Fix new Coverity issues (PR #20807) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: James Almer via ffmpeg-devel Cc: James Almer Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20807 opened by James Almer (jamrial) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20807 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20807.patch >>From fc67642ae6ad13b9bebff3f354cc249be70c917a Mon Sep 17 00:00:00 2001 From: James Almer Date: Fri, 31 Oct 2025 15:54:27 -0300 Subject: [PATCH 1/4] fftools/ffmpeg: make fg_create{_simple,} clear the input string pointer The graph string is either freed or attached to the filtergraph, so it's best to not leave a dangling pointer with the caller. Signed-off-by: James Almer --- fftools/ffmpeg.h | 6 +++--- fftools/ffmpeg_demux.c | 2 +- fftools/ffmpeg_filter.c | 14 ++++++++------ fftools/ffmpeg_mux_init.c | 2 +- fftools/ffmpeg_opt.c | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index c866980251..cc2ea1a56e 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -811,7 +811,7 @@ int parse_and_set_vsync(const char *arg, enum VideoSyncMethod *vsync_var, int fi int filtergraph_is_simple(const FilterGraph *fg); int fg_create_simple(FilterGraph **pfg, InputStream *ist, - char *graph_desc, + char **graph_desc, Scheduler *sch, unsigned sched_idx_enc, const OutputFilterOptions *opts); int fg_finalise_bindings(void); @@ -834,10 +834,10 @@ int ofilter_bind_enc(OutputFilter *ofilter, /** * Create a new filtergraph in the global filtergraph list. * - * @param graph_desc Graph description; an av_malloc()ed string, filtergraph + * @param graph_desc Pointer to graph description; an av_malloc()ed string, filtergraph * takes ownership of it. */ -int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch, +int fg_create(FilterGraph **pfg, char **graph_desc, Scheduler *sch, const OutputFilterOptions *opts); void fg_free(FilterGraph **pfg); diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 6901f59dd0..29ef86b7c9 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -1705,7 +1705,7 @@ static int istg_parse_tile_grid(const OptionsContext *o, Demuxer *d, InputStream return ret; } - ret = fg_create(NULL, graph_str, d->sch, &opts); + ret = fg_create(NULL, &graph_str, d->sch, &opts); if (ret < 0) return ret; diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index b0244fa774..9f962e6b8c 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -1085,7 +1085,7 @@ static const AVClass fg_class = { .category = AV_CLASS_CATEGORY_FILTER, }; -int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch, +int fg_create(FilterGraph **pfg, char **graph_desc, Scheduler *sch, const OutputFilterOptions *opts) { FilterGraphPriv *fgp; @@ -1097,7 +1097,7 @@ int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch, fgp = av_mallocz(sizeof(*fgp)); if (!fgp) { - av_freep(&graph_desc); + av_freep(graph_desc); return AVERROR(ENOMEM); } fg = &fgp->fg; @@ -1108,7 +1108,7 @@ int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch, } else { ret = av_dynarray_add_nofree(&filtergraphs, &nb_filtergraphs, fgp); if (ret < 0) { - av_freep(&graph_desc); + av_freep(graph_desc); av_freep(&fgp); return ret; } @@ -1117,11 +1117,13 @@ int fg_create(FilterGraph **pfg, char *graph_desc, Scheduler *sch, } fg->class = &fg_class; - fg->graph_desc = graph_desc; + fg->graph_desc = *graph_desc; fgp->disable_conversions = !auto_conversion_filters; fgp->nb_threads = -1; fgp->sch = sch; + *graph_desc = NULL; + snprintf(fgp->log_name, sizeof(fgp->log_name), "fc#%d", fg->index); fgp->frame = av_frame_alloc(); @@ -1245,7 +1247,7 @@ fail: int fg_create_simple(FilterGraph **pfg, InputStream *ist, - char *graph_desc, + char **graph_desc, Scheduler *sch, unsigned sched_idx_enc, const OutputFilterOptions *opts) { @@ -1270,7 +1272,7 @@ int fg_create_simple(FilterGraph **pfg, "to have exactly 1 input and 1 output. " "However, it had %d input(s) and %d output(s). Please adjust, " "or use a complex filtergraph (-filter_complex) instead.\n", - graph_desc, fg->nb_inputs, fg->nb_outputs); + *graph_desc, fg->nb_inputs, fg->nb_outputs); return AVERROR(EINVAL); } if (fg->outputs[0]->type != type) { diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index be1dbad479..bcbbee9126 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -1003,7 +1003,7 @@ ost_bind_filter(const Muxer *mux, MuxStream *ms, OutputFilter *ofilter, ost->filter = ofilter; ret = ofilter_bind_enc(ofilter, ms->sch_idx_enc, &opts); } else { - ret = fg_create_simple(&ost->fg_simple, ost->ist, filters, + ret = fg_create_simple(&ost->fg_simple, ost->ist, &filters, mux->sch, ms->sch_idx_enc, &opts); if (ret >= 0) ost->filter = ost->fg_simple->outputs[0]; diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index f51523d2e0..80bb9236af 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1496,7 +1496,7 @@ int ffmpeg_parse_options(int argc, char **argv, Scheduler *sch) /* create complex filtergraphs */ for (int i = 0; i < go.nb_filtergraphs; i++) { - ret = fg_create(NULL, go.filtergraphs[i], sch, NULL); + ret = fg_create(NULL, &go.filtergraphs[i], sch, NULL); go.filtergraphs[i] = NULL; if (ret < 0) goto fail; -- 2.49.1 >>From 2037e2b15b84fc2b31c841f115eacaa0d0f09d6b Mon Sep 17 00:00:00 2001 From: James Almer Date: Fri, 31 Oct 2025 15:56:40 -0300 Subject: [PATCH 2/4] fftools/ffmpeg_demux: fix potential memory leak when creating tile grid filtergraphs Fixes CID 1668266. Signed-off-by: James Almer --- fftools/ffmpeg_demux.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 29ef86b7c9..cb79dd7611 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -1702,17 +1702,22 @@ static int istg_parse_tile_grid(const OptionsContext *o, Demuxer *d, InputStream ret = av_packet_side_data_to_frame(&opts.side_data, &opts.nb_side_data, sd, 0); if (ret < 0 && ret != AVERROR(EINVAL)) - return ret; + goto fail; } ret = fg_create(NULL, &graph_str, d->sch, &opts); if (ret < 0) - return ret; + goto fail; istg->fg = filtergraphs[nb_filtergraphs-1]; istg->fg->is_internal = 1; - return 0; + ret = 0; +fail: + if (ret < 0) + av_freep(&graph_str); + + return ret; } static int istg_add(const OptionsContext *o, Demuxer *d, AVStreamGroup *stg) -- 2.49.1 >>From 402599354e29b17b7d6e49666180bbe603a9d871 Mon Sep 17 00:00:00 2001 From: James Almer Date: Fri, 31 Oct 2025 15:59:18 -0300 Subject: [PATCH 3/4] fftools/ffmpeg_filter: check the side data descriptor pointer is not NULL Fixes CID 1668264. Signed-off-by: James Almer --- fftools/ffmpeg_filter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 9f962e6b8c..a770804862 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -2266,7 +2266,7 @@ static int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *fr for (int i = 0; i < frame->nb_side_data; i++) { const AVSideDataDescriptor *desc = av_frame_side_data_desc(frame->side_data[i]->type); - if (!(desc->props & AV_SIDE_DATA_PROP_GLOBAL) || + if (!desc || !(desc->props & AV_SIDE_DATA_PROP_GLOBAL) || frame->side_data[i]->type == AV_FRAME_DATA_DISPLAYMATRIX) continue; -- 2.49.1 >>From 858b53bb82afe70863ed33d7cfbc73822b49ff69 Mon Sep 17 00:00:00 2001 From: James Almer Date: Fri, 31 Oct 2025 16:05:02 -0300 Subject: [PATCH 4/4] avutil/csp: check the for NULL pointer in av_csp_primaries_desc_from_id Fixes CID 1668265. Signed-off-by: James Almer --- libavutil/csp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavutil/csp.c b/libavutil/csp.c index c8ecddc110..2ab4fee9dd 100644 --- a/libavutil/csp.c +++ b/libavutil/csp.c @@ -100,7 +100,7 @@ const AVColorPrimariesDesc *av_csp_primaries_desc_from_id(enum AVColorPrimaries else if (((unsigned)prm >= AVCOL_PRI_EXT_BASE) && ((unsigned)prm < AVCOL_PRI_EXT_NB)) p = &color_primaries_ext[prm - AVCOL_PRI_EXT_BASE]; - if (!p->prim.r.x.num) + if (p && !p->prim.r.x.num) return NULL; return p; } -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org