]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: peers: crash on reload without local peer.
authorFrédéric Lécaille <flecaille@haproxy.com>
Fri, 4 Oct 2019 06:30:04 +0000 (08:30 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 4 Oct 2019 08:21:04 +0000 (10:21 +0200)
When we configure a "peers" section without local peer, this makes haproxy
old process crash on reload.

Such a configuration file allows to reproduce this issue:

  global
    stats socket /tmp/sock1 mode 666 level admin
    stats timeout 10s

  peers peers
    peer localhost 127.0.0.1:1024

This bug was introduced by this commit:
  "MINOR: cfgparse: Make "peer" lines be parsed as "server" lines"

This commit introduced a new condition to detect a "peers" section without
local peer. This is a "peers" section with a frontend struct which has no ->id
initialized member. Such a "peers" section must be removed.

This patch adds this new condition to remove such peers sections without local
peer as this was always done before.

Must be backported to 2.0.

src/cfgparse.c

index 6cbcac4f41d09fde67d31ecb575e3ecb26158f03..05a64a8ef47aca39b962e00cb3534f85b618a913 100644 (file)
@@ -3903,7 +3903,7 @@ out_uri_auth_compat:
                                        stop_proxy(curpeers->peers_fe);
                                curpeers->peers_fe = NULL;
                        }
-                       else if (!curpeers->peers_fe) {
+                       else if (!curpeers->peers_fe || !curpeers->peers_fe->id) {
                                ha_warning("Removing incomplete section 'peers %s' (no peer named '%s').\n",
                                           curpeers->id, localpeer);
                        }