From 7cf930b2ddcfb0a79d1c84fd85cdf3d0dbbf726c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 14 Jul 2009 21:17:05 +0200 Subject: [PATCH] [BUG] config: tcp-request content only accepts "if" or "unless" As reported by Maik Broemme, if something different from "if" or "unless" was specified after "tcp-request content accept", the condition would silently remain void. The parser must obviously complain since this typically corresponds to a forgotten "if". (cherry picked from commit 606ad73e73600275aae944f00bda4af9976c0be8) --- src/proto_tcp.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/proto_tcp.c b/src/proto_tcp.c index 4d0ae3559..535a7d935 100644 --- a/src/proto_tcp.c +++ b/src/proto_tcp.c @@ -505,10 +505,18 @@ static int tcp_parse_tcp_req(char **args, int section_type, struct proxy *curpx, pol = ACL_COND_NONE; cond = NULL; - if (!strcmp(args[3], "if")) + if (!*args[3]) + pol = ACL_COND_NONE; + else if (!strcmp(args[3], "if")) pol = ACL_COND_IF; else if (!strcmp(args[3], "unless")) pol = ACL_COND_UNLESS; + else { + retlen = snprintf(err, errlen, + "'%s %s %s' only accepts 'if' or 'unless', in %s '%s' (was '%s')", + args[0], args[1], args[2], proxy_type_str(curpx), curpx->id, args[3]); + return -1; + } /* Note: we consider "if TRUE" when there is no condition */ if (pol != ACL_COND_NONE &&