]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: lb-map: fix unprotected update to server's score
authorWilly Tarreau <w@1wt.eu>
Sun, 2 Dec 2018 18:22:55 +0000 (19:22 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 2 Dec 2018 18:22:55 +0000 (19:22 +0100)
The loop trying to figure the best server is theorically capable of
finishing the loop with best == NULL, causing the HA_ATOMIC_SUB()
to fail there. However for this to happen the list should be empty,
which is avoided at the beginning of the function. As it is, the
function still remains at risk so better address this now.

This patch should be backported to 1.8.

src/lb_map.c

index 2d8faa9ae5c4f04664b4f81f826b5075404fc004..4b992d3a45a394f3e1a1d860284b526b5c5c1bb9 100644 (file)
@@ -132,7 +132,8 @@ void recalc_server_map(struct proxy *px)
                        }
                }
                px->lbprm.map.srv[o] = best;
-               HA_ATOMIC_SUB(&best->wscore, tot);
+               if (best)
+                       HA_ATOMIC_SUB(&best->wscore, tot);
        }
 }