From: Christopher Faulet Date: Wed, 14 Jun 2017 12:41:33 +0000 (+0200) Subject: BUG/MINOR: acls: Set the right refflag when patterns are loaded from a map X-Git-Tag: v1.8-dev3~292 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=54ceb041d6372a70afdbdd76f4f2bac46a088d18;p=thirdparty%2Fhaproxy.git BUG/MINOR: acls: Set the right refflag when patterns are loaded from a map For an ACL, we can load patterns from a map using the flag -M. For example: acl test hdr(host) -M -f hosts.map The file is parsed as a map et the ACL will be executed as expected. But the reference flag is wrong. It is set to PAT_REF_ACL. So the map will never be listed by a "show map" on the stat socket. Setting the reference flag to PAT_REF_ACL|PAT_REF_MAP fixes the bug. --- diff --git a/src/acl.c b/src/acl.c index da62e6c01b..9b67a611b0 100644 --- a/src/acl.c +++ b/src/acl.c @@ -140,7 +140,7 @@ struct acl_expr *parse_acl_expr(const char **args, char **err, struct arg_list * __label__ out_return, out_free_expr; struct acl_expr *expr; struct acl_keyword *aclkw; - int patflags; + int refflags, patflags; const char *arg; struct sample_expr *smp = NULL; int idx = 0; @@ -441,6 +441,7 @@ struct acl_expr *parse_acl_expr(const char **args, char **err, struct arg_list * * -u : force the unique id of the acl * -- : everything after this is not an option */ + refflags = PAT_REF_ACL; patflags = 0; is_loaded = 0; unique_id = -1; @@ -470,7 +471,7 @@ struct acl_expr *parse_acl_expr(const char **args, char **err, struct arg_list * goto out_free_expr; } - if (!pattern_read_from_file(&expr->pat, PAT_REF_ACL, args[1], patflags, load_as_map, err, file, line)) + if (!pattern_read_from_file(&expr->pat, refflags, args[1], patflags, load_as_map, err, file, line)) goto out_free_expr; is_loaded = 1; args++; @@ -503,6 +504,7 @@ struct acl_expr *parse_acl_expr(const char **args, char **err, struct arg_list * args++; } else if (strcmp(*args, "-M") == 0) { + refflags |= PAT_REF_MAP; load_as_map = 1; } else if (strcmp(*args, "--") == 0) {