X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/e3e281ccf9d8777d0df98ddd644720573e0343d1..38965d80d70cacd0c944d32f7107549a3a272b35:/src/src/routers/queryprogram.c diff --git a/src/src/routers/queryprogram.c b/src/src/routers/queryprogram.c index e6e538841..b1d736f94 100644 --- a/src/src/routers/queryprogram.c +++ b/src/src/routers/queryprogram.c @@ -2,11 +2,14 @@ * Exim - an Internet mail transport agent * *************************************************/ +/* Copyright (c) The Exim Maintainers 2020 - 2023 */ /* Copyright (c) University of Cambridge 1995 - 2018 */ -/* Copyright (c) The Exim Maintainers 2020 - 2021 */ /* See the file NOTICE for conditions of use and distribution. */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ #include "../exim.h" + +#ifdef ROUTER_QUERYPROGRAM /* Remainder of file */ #include "rf_functions.h" #include "queryprogram.h" @@ -86,13 +89,13 @@ queryprogram_router_options_block *ob = /* A command must be given */ -if (ob->command == NULL) +if (!ob->command) log_write(0, LOG_PANIC_DIE|LOG_CONFIG_FOR, "%s router:\n " "a command specification is required", rblock->name); /* A uid/gid must be supplied */ -if (!ob->cmd_uid_set && ob->expand_cmd_uid == NULL) +if (!ob->cmd_uid_set && !ob->expand_cmd_uid) log_write(0, LOG_PANIC_DIE|LOG_CONFIG_FOR, "%s router:\n " "command_user must be specified", rblock->name); } @@ -242,10 +245,6 @@ rc = rf_get_munge_headers(addr, rblock, &addr_prop.extra_headers, &addr_prop.remove_headers); if (rc != OK) return rc; -#ifdef EXPERIMENTAL_SRS_ALT -addr_prop.srs_sender = NULL; -#endif - /* Get the fixed or expanded uid under which the command is to run (initialization ensures that one or the other is set). */ @@ -290,9 +289,10 @@ if (curr_uid != root_uid && (uid != curr_uid || gid != curr_gid)) /* Set up the command to run */ +GET_OPTION("command"); if (!transport_set_up_command(&argvptr, /* anchor for arg list */ ob->command, /* raw command */ - TRUE, /* expand the arguments */ + TSUC_EXPAND_ARGS, /* arguments expanded but must not be tainted */ 0, /* not relevant when... */ NULL, /* no transporting address */ US"queryprogram router", /* for error messages */ @@ -537,5 +537,6 @@ addr->prop = addr_prop; return rf_queue_add(addr, addr_local, addr_remote, rblock, pw) ? OK : DEFER; } -#endif /*!MACRO_PREDEF*/ +#endif /*!MACRO_PREDEF*/ +#endif /*ROUTER_QUERYPROGRAM*/ /* End of routers/queryprogram.c */