From ac9756e9e844d7abf4523e65d965dd11310e703f Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 10 Sep 2024 08:55:29 +0200 Subject: [PATCH] BUG/MINOR: pattern: do not leave a leading comma on "set" error messages 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 (cherry picked from commit 6cae9b3ead0af8c751e9ed1e160432ae4a8773c6) Signed-off-by: Willy Tarreau --- src/pattern.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pattern.c b/src/pattern.c index 135c0bcede89..93a956586b65 100644 --- a/src/pattern.c +++ b/src/pattern.c @@ -1793,8 +1793,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;