]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: maps: only try to parse the default value when it's present
authorWilly Tarreau <w@1wt.eu>
Fri, 19 Apr 2019 09:35:22 +0000 (11:35 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 19 Apr 2019 09:35:22 +0000 (11:35 +0200)
Maps returning an IP address (e.g. map_str_ip) support an optional
default value which must be parsed. Unfortunately the parsing code does
not check for this argument's existence and uncondtionally tries to
resolve the argument whenever the output is of type address, resulting
in segfaults at parsing time when no such argument is provided. This
patch adds the appropriate check.

This fix may be backported as far as 1.6.

src/map.c

index cf14893070bc0101c63a444bee2ccfcca9863d06..1a2190d9ac5880050798eebf7a0cb955ab341ab8 100644 (file)
--- a/src/map.c
+++ b/src/map.c
@@ -143,10 +143,10 @@ int sample_load_map(struct arg *arg, struct sample_conv *conv,
                                    1, err, file, line))
                return 0;
 
-       /* the maps of type IP have a string as defaultvalue. This
-        * string canbe anipv4 or an ipv6, we must convert it.
+       /* the maps of type IP support a string as default value. This
+        * string can be an ipv4 or an ipv6, we must convert it.
         */
-       if (desc->conv->out_type == SMP_T_ADDR) {
+       if (arg[1].type != ARGT_STOP && desc->conv->out_type == SMP_T_ADDR) {
                struct sample_data data;
                if (!map_parse_ip(arg[1].data.str.area, &data)) {
                        memprintf(err, "map: cannot parse default ip <%s>.",