packages/net/haproxy/patches/044-BUG-MEDIUM-thread-http-Add-missing-locks-in-set-map-and-add-acl-HTTP-rules.patch
Christian Lachner b7d6096f54 haproxy: Update all patches for HAProxy v1.8.19
- Add new patches (see https://www.haproxy.org/bugs/bugs-1.8.19.html)
- Raise PKG_RELEASE to 4

Signed-off-by: Christian Lachner <gladiac@gmail.com>
2019-04-26 08:56:27 +02:00

48 lines
1.7 KiB
Diff

commit 8276ea30400887cb25186571ac62252da97b91df
Author: Christopher Faulet <cfaulet@haproxy.com>
Date: Fri Apr 19 14:50:55 2019 +0200
BUG/MEDIUM: thread/http: Add missing locks in set-map and add-acl HTTP rules
Locks are missing in the rules "http-request set-map" and "http-response
add-acl" when an acl or map update is performed. Pattern elements must be
locked.
This patch must be backported to 1.9 and 1.8. For the 1.8, the HTX part must be
ignored.
(cherry picked from commit e84289e5854aa3b00cd19032387f435ca6748491)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 82dedc4add923bd1ff1b47a559a23e83886521a8)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/proto_http.c b/src/proto_http.c
index 9beaa137..ccacd6a4 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -2717,12 +2717,14 @@ resume_execution:
value->str[value->len] = '\0';
/* perform update */
+ HA_SPIN_LOCK(PATREF_LOCK, &ref->lock);
if (pat_ref_find_elt(ref, key->str) != NULL)
/* update entry if it exists */
pat_ref_set(ref, key->str, value->str, NULL);
else
/* insert a new entry */
pat_ref_add(ref, key->str, value->str, NULL);
+ HA_SPIN_UNLOCK(PATREF_LOCK, &ref->lock);
free_trash_chunk(key);
free_trash_chunk(value);
@@ -2978,8 +2980,10 @@ resume_execution:
/* perform update */
/* check if the entry already exists */
+ HA_SPIN_LOCK(PATREF_LOCK, &ref->lock);
if (pat_ref_find_elt(ref, key->str) == NULL)
pat_ref_add(ref, key->str, NULL, NULL);
+ HA_SPIN_UNLOCK(PATREF_LOCK, &ref->lock);
free_trash_chunk(key);
break;