From: Aurelien DARRAGON Date: Tue, 19 Sep 2023 16:16:56 +0000 (+0200) Subject: MINOR: http_htx/errors: prevent the use of some keywords when not in tcp/http mode X-Git-Tag: v2.9-dev7~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b41b77b4ccfd71647f469065006310772f4911a3;p=thirdparty%2Fhaproxy.git MINOR: http_htx/errors: prevent the use of some keywords when not in tcp/http mode Prevent the use of "errorfile", "errorfiles" and various errorloc options in proxies that are neither in TCP or HTTP mode. --- diff --git a/src/http_htx.c b/src/http_htx.c index c9d01aac8d..5163b946db 100644 --- a/src/http_htx.c +++ b/src/http_htx.c @@ -2014,6 +2014,12 @@ static int proxy_parse_errorloc(char **args, int section, struct proxy *curpx, goto out; } + if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) { + memprintf(errmsg, "%s : requires TCP or HTTP mode.\n", args[0]); + ret = -1; + goto out; + } + if (*(args[1]) == 0 || *(args[2]) == 0) { memprintf(errmsg, "%s : expects and as arguments.\n", args[0]); ret = -1; @@ -2081,6 +2087,12 @@ static int proxy_parse_errorfile(char **args, int section, struct proxy *curpx, goto out; } + if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) { + memprintf(errmsg, "%s : requires TCP or HTTP mode.\n", args[0]); + ret = -1; + goto out; + } + if (*(args[1]) == 0 || *(args[2]) == 0) { memprintf(errmsg, "%s : expects and as arguments.\n", args[0]); ret = -1; @@ -2144,6 +2156,12 @@ static int proxy_parse_errorfiles(char **args, int section, struct proxy *curpx, goto out; } + if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) { + memprintf(err, "%s : requires TCP or HTTP mode.\n", args[0]); + ret = -1; + goto out; + } + if (!*(args[1])) { memprintf(err, "%s : expects as argument.", args[0]); ret = -1; @@ -2207,6 +2225,11 @@ static int proxy_parse_http_error(char **args, int section, struct proxy *curpx, goto out; } + if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) { + memprintf(errmsg, "%s : requires TCP or HTTP mode.\n", args[0]); + goto error; + } + cur_arg = 1; curpx->conf.args.ctx = ARGC_HERR; reply = http_parse_http_reply((const char **)args, &cur_arg, curpx, 0, errmsg);