diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2018-10-19 03:40:30 +0900 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2018-10-27 22:03:01 +0200 |
commit | 1990a3efabc11975c96cc0c3e2aa90abbae7325b (patch) | |
tree | 8524dbbed122b918068f7ead336c9389f42dcecd | |
parent | a7137ce0ce7fbb7f214f1f9ec7345e90dbce27b5 (diff) | |
download | NetworkManager-1990a3efabc11975c96cc0c3e2aa90abbae7325b.tar.gz |
sd-dhcp6: do not update serverid when ENOMEM
(cherry picked from commit 33d367589581a9f46fe291181ef2b30b812e5cb3)
-rw-r--r-- | src/systemd/src/libsystemd-network/sd-dhcp6-lease.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c b/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c index eb914f77d8..8c41dce0d0 100644 --- a/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c +++ b/src/systemd/src/libsystemd-network/sd-dhcp6-lease.c @@ -54,15 +54,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; |