sd-dhcp: permit unsetting the hostname again
authorLennart Poettering <lennart@poettering.net>
Fri, 18 Nov 2016 11:33:14 +0000 (12:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 21 Nov 2016 21:47:47 +0000 (22:47 +0100)
Let's handle NULL hostnames (for unsetting it) before we validate the name.

src/libsystemd-network/sd-dhcp-client.c

index 6475da2..9716168 100644 (file)
@@ -390,17 +390,21 @@ int sd_dhcp_client_set_hostname(
 
         assert_return(client, -EINVAL);
 
+        if (!hostname) {
+                client->hostname = mfree(client->hostname);
+                return 0;
+        }
+
+        /* Refuse hostnames that neither qualify as DNS nor as Linux hosntames */
         if (!hostname_is_valid(hostname, false) && !dns_name_is_valid(hostname))
                 return -EINVAL;
 
         if (streq_ptr(client->hostname, hostname))
                 return 0;
 
-        if (hostname) {
-                new_hostname = strdup(hostname);
-                if (!new_hostname)
-                        return -ENOMEM;
-        }
+        new_hostname = strdup(hostname);
+        if (!new_hostname)
+                return -ENOMEM;
 
         free(client->hostname);
         client->hostname = new_hostname;