]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp6-lease: reset client or server ID when length is zero
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 4 Feb 2022 01:45:40 +0000 (10:45 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 14 Feb 2022 05:43:45 +0000 (14:43 +0900)
Addresses https://github.com/systemd/systemd/pull/22406#issuecomment-1029391091.

src/libsystemd-network/sd-dhcp6-lease.c

index 3cb30348a9b99da1cfca14f1c1f318487a4c327b..7d6a6f7f9cbb95fcd0ac213248fb977205f01b0a 100644 (file)
@@ -72,15 +72,16 @@ DHCP6IA *dhcp6_lease_free_ia(DHCP6IA *ia) {
 }
 
 int dhcp6_lease_set_clientid(sd_dhcp6_lease *lease, const uint8_t *id, size_t len) {
-        uint8_t *clientid;
+        uint8_t *clientid = NULL;
 
         assert(lease);
-        assert(id);
-        assert(len > 0);
+        assert(id || len == 0);
 
-        clientid = memdup(id, len);
-        if (!clientid)
-                return -ENOMEM;
+        if (len > 0) {
+                clientid = memdup(id, len);
+                if (!clientid)
+                        return -ENOMEM;
+        }
 
         free_and_replace(lease->clientid, clientid);
         lease->clientid_len = len;
@@ -103,15 +104,16 @@ int dhcp6_lease_get_clientid(sd_dhcp6_lease *lease, uint8_t **ret_id, size_t *re
 }
 
 int dhcp6_lease_set_serverid(sd_dhcp6_lease *lease, const uint8_t *id, size_t len) {
-        uint8_t *serverid;
+        uint8_t *serverid = NULL;
 
         assert(lease);
-        assert(id);
-        assert(len > 0);
+        assert(id || len == 0);
 
-        serverid = memdup(id, len);
-        if (!serverid)
-                return -ENOMEM;
+        if (len > 0) {
+                serverid = memdup(id, len);
+                if (!serverid)
+                        return -ENOMEM;
+        }
 
         free_and_replace(lease->serverid, serverid);
         lease->serverid_len = len;