X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-address.c;h=1ba210831661aa946c7f33141291cbb9e61b04a1;hb=563c69c6b2c2bd691352ef522cb9ec95c08a0c63;hp=9c3e0e33765ab75f345a7e1da9f737f9d96b6b72;hpb=68ceb9df6a39a7f86ffc3cf8266ca677a5d5271b;p=elogind.git diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 9c3e0e337..1ba210831 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -144,6 +144,8 @@ int address_drop(Address *address, Link *link, return r; } + link_ref(link); + return 0; } @@ -225,13 +227,15 @@ int address_update(Address *address, Link *link, return r; } + link_ref(link); + return 0; } 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 +278,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 +288,8 @@ static int address_acquire(Link *link, Address *original, Address **ret) { LIST_PREPEND(addresses, link->pool_addresses, na); *ret = na; + na = NULL; + return 0; } @@ -374,6 +377,8 @@ int address_configure(Address *address, Link *link, return r; } + link_ref(link); + return 0; }