]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: server: Crash when setting FQDN via CLI.
authorFrédéric Lécaille <flecaille@haproxy.com>
Tue, 21 Aug 2018 13:04:23 +0000 (15:04 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 12 Sep 2018 05:41:41 +0000 (07:41 +0200)
This patch ensures that a DNS resolution may be launched before
setting a server FQDN via the CLI. Especially, it checks that
resolvers was set.

A LEVEL 4 reg testing file is provided.

Thanks to Lukas Tribus for having reported this issue.

Must be backported to 1.8.

reg-tests/server/b00000.vtc [new file with mode: 0644]
src/server.c

diff --git a/reg-tests/server/b00000.vtc b/reg-tests/server/b00000.vtc
new file mode 100644 (file)
index 0000000..5fb5c62
--- /dev/null
@@ -0,0 +1,29 @@
+varnishtest "Set server FQDN via CLI crash"
+
+feature ignore_unknown_macro
+
+# Do nothing. Is there only to create s1_* macros
+server s1 {
+} -start
+
+haproxy h1 -conf {
+    defaults
+        mode http
+        timeout connect 1s
+        timeout client  1s
+        timeout server  1s
+
+    frontend myfrontend
+        bind "fd@${my_fe}"
+        default_backend test
+
+    backend test
+        server www1 ${s1_addr}:${s1_port}
+} -start
+
+haproxy h1 -cli {
+    send "set server test/www1 fqdn foo.fqdn"
+    expect ~ "could not update test/www1 FQDN by 'stats socket command'"
+    send "show servers state test"
+    expect ~ "test 1 www1 ${s1_addr} .* - ${s1_port}"
+} -wait
index 766f5ded1cf3d177b2d2d1b7d1d72b071d333173..e6944c2e1cb3fa6ba1ba8949fba5e065cf742130 100644 (file)
@@ -3980,6 +3980,10 @@ int srv_set_fqdn(struct server *srv, const char *hostname, int dns_locked)
        char                  *hostname_dn;
        int                    hostname_len, hostname_dn_len;
 
+       /* Note that the server lock is already held. */
+       if (!srv->resolvers)
+               return -1;
+
        if (!dns_locked)
                HA_SPIN_LOCK(DNS_LOCK, &srv->resolvers->lock);
        /* run time DNS resolution was not active for this server