summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/sd-dhcp6-lease.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-10-19 03:40:30 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2018-10-19 06:11:58 +0900
commit33d367589581a9f46fe291181ef2b30b812e5cb3 (patch)
tree1694e80aa1370f903d468f5ce04637637d1f9ec7 /src/libsystemd-network/sd-dhcp6-lease.c
parentda07cf358231caca214da5d4f161b06e713586be (diff)
downloadsystemd-33d367589581a9f46fe291181ef2b30b812e5cb3.tar.gz
sd-dhcp6: do not update serverid when ENOMEM
Diffstat (limited to 'src/libsystemd-network/sd-dhcp6-lease.c')
-rw-r--r--src/libsystemd-network/sd-dhcp6-lease.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/libsystemd-network/sd-dhcp6-lease.c b/src/libsystemd-network/sd-dhcp6-lease.c
index 15fec2d851..8b424811ad 100644
--- a/src/libsystemd-network/sd-dhcp6-lease.c
+++ b/src/libsystemd-network/sd-dhcp6-lease.c
@@ -52,15 +52,16 @@ DHCP6IA *dhcp6_lease_free_ia(DHCP6IA *ia) {
int dhcp6_lease_set_serverid(sd_dhcp6_lease *lease, const uint8_t *id,
size_t len) {
+ uint8_t *serverid;
+
assert_return(lease, -EINVAL);
assert_return(id, -EINVAL);
- free(lease->serverid);
-
- lease->serverid = memdup(id, len);
- if (!lease->serverid)
- return -EINVAL;
+ serverid = memdup(id, len);
+ if (!serverid)
+ return -ENOMEM;
+ free_and_replace(lease->serverid, serverid);
lease->serverid_len = len;
return 0;