BUG/MINOR: stick-table: Always call smp_fetch_src() with a valid arg list
authorChristopher Faulet <cfaulet@haproxy.com>
Fri, 29 Jan 2021 09:27:47 +0000 (10:27 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Fri, 5 Feb 2021 11:26:18 +0000 (12:26 +0100)
The sample fetch functions must always be called with a valid argument
list. When called by hand, if there is no argument to pass, empty_arg_list must
be used.

In the stick-table code, there are some calls to smp_fetch_src() with NULL as
argument list. It is changed to use empty_arg_list instead. It is not really a
bug because smp_fetch_src() does not use the argument list. But it is an API
bug.

This patch may be backported to all stable branches as a cleanup.

(cherry picked from commit bdbd5db2a50461fceb7fb89329e73d08f90e44fd)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit 1945529933f00a37383990035d7257020efef520)
[cf: context adjustments]
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 8e720d0fb09c93ca45076ccb23aa11e268ca0e16)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>

src/stick_table.c

index 880e20f..30bee32 100644 (file)
@@ -2218,7 +2218,7 @@ smp_fetch_sc_stkctr(struct session *sess, struct stream *strm, const struct arg
                smp.px = NULL;
                smp.sess = sess;
                smp.strm = strm;
-               if (!smp_fetch_src(NULL, &smp, NULL, NULL))
+               if (!smp_fetch_src(empty_arg_list, &smp, NULL, NULL))
                        return NULL;
 
                /* Converts into key. */
@@ -2283,7 +2283,7 @@ smp_create_src_stkctr(struct session *sess, struct stream *strm, const struct ar
        smp.px = NULL;
        smp.sess = sess;
        smp.strm = strm;
-       if (!smp_fetch_src(NULL, &smp, NULL, NULL))
+       if (!smp_fetch_src(empty_arg_list, &smp, NULL, NULL))
                return NULL;
 
        /* Converts into key. */
@@ -2815,7 +2815,7 @@ smp_fetch_src_updt_conn_cnt(const struct arg *args, struct sample *smp, const ch
                return 0;
 
        /* Fetch source address in a sample. */
-       if (!smp_fetch_src(NULL, smp, NULL, NULL))
+       if (!smp_fetch_src(empty_arg_list, smp, NULL, NULL))
                return 0;
 
        /* Converts into key. */