1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-02-02 09:47:03 +03:00

network: fix use-after-free in link_free

Freeing a link removes it both from addresses and addresses_foreign,
causing SIGSEGV if one of the sets is freed.
This commit is contained in:
Hristo Venev 2015-10-29 12:14:44 +02:00
parent 2c80779e33
commit 4701725cd5

View File

@ -349,12 +349,12 @@ static void link_free(Link *link) {
while (!set_isempty(link->addresses))
address_free(set_first(link->addresses));
set_free(link->addresses);
while (!set_isempty(link->addresses_foreign))
address_free(set_first(link->addresses_foreign));
set_free(link->addresses_foreign);
link->addresses = set_free(link->addresses);
link->addresses_foreign = set_free(link->addresses_foreign);
while ((address = link->pool_addresses)) {
LIST_REMOVE(addresses, link->pool_addresses, address);