From: Yu Watanabe Date: Fri, 4 Feb 2022 01:45:40 +0000 (+0900) Subject: sd-dhcp6-lease: reset client or server ID when length is zero X-Git-Tag: v251-rc1~291^2~59 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=93bd7c4192c9afc41be1b317278a7ed3e829b971;p=thirdparty%2Fsystemd.git sd-dhcp6-lease: reset client or server ID when length is zero Addresses https://github.com/systemd/systemd/pull/22406#issuecomment-1029391091. --- diff --git a/src/libsystemd-network/sd-dhcp6-lease.c b/src/libsystemd-network/sd-dhcp6-lease.c index 3cb30348a9b..7d6a6f7f9cb 100644 --- a/src/libsystemd-network/sd-dhcp6-lease.c +++ b/src/libsystemd-network/sd-dhcp6-lease.c @@ -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;