1 commit 974c6916ba2f7efc83193bb8c04e95294ca21112
2 Author: Christopher Faulet <cfaulet@haproxy.com>
3 Date: Fri Jul 26 13:52:13 2019 +0200
5 BUG/MEDIUM: lb-chash: Fix the realloc() when the number of nodes is increased
7 When the number of nodes is increased because the server weight is changed, the
8 nodes array must be realloc. But its new size is not correctly set. Only the
9 total number of nodes is used to set the new size. But it must also depends on
10 the size of a node. It must be the total nomber of nodes times the size of a
13 This issue was reported on Github (#189).
15 This patch must be backported to all versions since the 1.6.
17 (cherry picked from commit 366ad86af72c455cc958943913cb2de20eefee71)
18 Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
20 diff --git a/src/lb_chash.c b/src/lb_chash.c
21 index a35351e9..0bf4e81a 100644
24 @@ -84,7 +84,7 @@ static inline void chash_queue_dequeue_srv(struct server *s)
25 * increased the weight beyond the original weight
27 if (s->lb_nodes_tot < s->next_eweight) {
28 - struct tree_occ *new_nodes = realloc(s->lb_nodes, s->next_eweight);
29 + struct tree_occ *new_nodes = realloc(s->lb_nodes, s->next_eweight * sizeof(*new_nodes));