From: Willy Tarreau Date: Wed, 3 Jun 2026 12:36:37 +0000 (+0200) Subject: CLEANUP: map: always test pat->ref in sample_conv_map_key() X-Git-Tag: v3.4.0~3 X-Git-Url: http://git.kaiwu.me/sitemap.xml?a=commitdiff_plain;h=a7c64a5b12f8f205b5e0b7f044052d9993e21fa7;p=haproxy.git CLEANUP: map: always test pat->ref in sample_conv_map_key() 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. --- diff --git a/src/map.c b/src/map.c index dd4f63361..9bca28d8b 100644 --- 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;