BUG/MINOR: pattern: do not leave a leading comma on "set" error messages
authorWilly Tarreau <w@1wt.eu>
Tue, 10 Sep 2024 06:55:29 +0000 (08:55 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 10 Sep 2024 07:07:27 +0000 (09:07 +0200)
Commit 4f2493f355 ("BUG/MINOR: pattern: pat_ref_set: fix UAF reported by
coverity") dropped the condition to concatenate error messages and as
such introduced a leading comma in front of all of them. Then commit
911f4d93d4 ("BUG/MINOR: pattern: pat_ref_set: return 0 if err was found")
changed the behavior to stop at the first error anyway, so all the
mechanics dedicated to the concatenation of error messages is no longer
needed and we can simply return the error as-is, without inserting any
comma.

This should be backported where the patches above are backported.

(cherry picked from commit 9f8d9c9e8bdef8e7b8f7d1d641987b4d0dcae988)
Signed-off-by: Willy Tarreau <w@1wt.eu>

src/pattern.c

index e2fb5c3..2d0c888 100644 (file)
@@ -1797,8 +1797,10 @@ int pat_ref_set(struct pat_ref *ref, const char *key, const char *value, char **
                elt = ebmb_entry(node, struct pat_ref_elt, node);
                node = ebmb_next_dup(node);
                if (!pat_ref_set_elt(ref, elt, value, &tmp_err)) {
-                       memprintf(err, "%s, %s", err && *err ? *err : "", tmp_err);
-                       ha_free(&tmp_err);
+                       if (err)
+                               *err = tmp_err;
+                       else
+                               ha_free(&tmp_err);
                        return 0;
                }
                found = 1;