network: fix crash in wireguard_done()

Fixes another issue in #10629.
This commit is contained in:
Yu Watanabe
2018-11-05 13:19:02 +09:00
parent 56ba90c2df
commit c195364da5
2 changed files with 13 additions and 3 deletions
+12 -1
View File
@@ -717,10 +717,11 @@ static void wireguard_done(NetDev *netdev) {
Wireguard *w;
WireguardPeer *peer;
WireguardIPmask *mask;
WireguardEndpoint *e;
assert(netdev);
w = WIREGUARD(netdev);
assert(!w->unresolved_endpoints);
assert(w);
while ((peer = w->peers)) {
LIST_REMOVE(peers, w->peers, peer);
@@ -730,6 +731,16 @@ static void wireguard_done(NetDev *netdev) {
}
free(peer);
}
while ((e = w->unresolved_endpoints)) {
LIST_REMOVE(endpoints, w->unresolved_endpoints, e);
wireguard_endpoint_free(e);
}
while ((e = w->failed_endpoints)) {
LIST_REMOVE(endpoints, w->failed_endpoints, e);
wireguard_endpoint_free(e);
}
}
const NetDevVTable wireguard_vtable = {