]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: map: always test pat->ref in sample_conv_map_key()
authorWilly Tarreau <w@1wt.eu>
Wed, 3 Jun 2026 12:36:37 +0000 (14:36 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 3 Jun 2026 12:45:54 +0000 (14:45 +0200)
sample_conf_map_key() calls pattern_exec_match() which may return a
static pattern with ref=NULL when passed with fill=1 (which is the
case) and pat->match == NULL (which doesn't seem to be the case). It
doesn't seem it could happen with standard maps, as only "-m found"
drops has a NULL ->match function and there's no keyword associated
with it) but maybe this could happen with maps implemented in Lua,
though this remains unlikely.

Anyway better clarify the situation by always checking that the ref
is non-null before dereferencing it, it will at least avoid warnings
from code coverage tools.

src/map.c

index dd4f6336106e1cf47ed9f6e7060aaf32247136dc..9bca28d8b6ad86d808e5192560a78421828fba00 100644 (file)
--- a/src/map.c
+++ b/src/map.c
@@ -186,7 +186,7 @@ static int sample_conv_map_key(const struct arg *arg_p, struct sample *smp, void
        pat = pattern_exec_match(&desc->pat, smp, 1);
 
        /* Match case. */
-       if (pat) {
+       if (pat && pat->ref) {
                smp->data.type = SMP_T_STR;
                smp->flags |= SMP_F_CONST;
                smp->data.u.str.area = (char *)pat->ref->pattern;