diff options
-rw-r--r-- | src/network/networkd-address.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 9c3e0e3376..76febc7a07 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -231,7 +231,7 @@ int address_update(Address *address, Link *link, static int address_acquire(Link *link, Address *original, Address **ret) { union in_addr_union in_addr = {}; struct in_addr broadcast = {}; - Address *na = NULL; + _cleanup_address_free_ Address *na = NULL; int r; assert(link); @@ -274,11 +274,8 @@ static int address_acquire(Link *link, Address *original, Address **ret) { if (original->label) { na->label = strdup(original->label); - - if (!na->label) { - free(na); + if (!na->label) return -ENOMEM; - } } na->broadcast = broadcast; @@ -287,6 +284,8 @@ static int address_acquire(Link *link, Address *original, Address **ret) { LIST_PREPEND(addresses, link->pool_addresses, na); *ret = na; + na = NULL; + return 0; } |