From fb12f942b1b800aba352ac59b273e5b72dbe72ad Mon Sep 17 00:00:00 2001 From: jeanlf Date: Wed, 1 Sep 2021 14:04:10 +0200 Subject: [PATCH] [PATCH] fixed #1906 Gbp-Pq: Name CVE-2021-40944.patch --- src/filter_core/filter_session.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/filter_core/filter_session.c b/src/filter_core/filter_session.c index 0963e9a..724f560 100644 --- a/src/filter_core/filter_session.c +++ b/src/filter_core/filter_session.c @@ -1032,9 +1032,21 @@ GF_Filter *gf_fs_load_filter(GF_FilterSession *fsess, const char *name, GF_Err * filter = gf_filter_new(fsess, f_reg, args, NULL, argtype, err_code, NULL, GF_FALSE); if (!filter) return NULL; if (!filter->num_output_pids) { + //check we have a src specified for the filter const char *src_url = strstr(name, "src"); - if (src_url && (src_url[3]==fsess->sep_name)) - gf_filter_post_process_task(filter); + if (src_url && (src_url[3]==fsess->sep_name)) { + const GF_FilterArgs *args = filter->instance_args ? filter->instance_args : f_reg->args; + //check the filter has an src argument + //we don't want to call process on a filter not acting as source until at least one input is connected + i=0; + while (args && args[i].arg_name) { + if (!strcmp(args[i].arg_name, "src")) { + gf_filter_post_process_task(filter); + break; + } + i++; + } + } } return filter; } -- 2.30.2