Fix memory leak if UPnP gateway lacked IPv6FC support

This commit is contained in:
Cameron Gutman 2018-11-07 18:00:04 -08:00
parent 4ee5b9d28a
commit 9dd169ba02

View File

@ -318,11 +318,8 @@ bool UPnPHandleDeviceList(struct UPNPDev* list, bool ipv6, bool enable, char* la
if (ResolveStableIP6Address(localAddress)) { if (ResolveStableIP6Address(localAddress)) {
printf("Stable global IPv6 address is: %s" NL, localAddress); printf("Stable global IPv6 address is: %s" NL, localAddress);
if (data.IPv6FC.controlurl[0] == 0) { // Don't try IPv6FC without a control URL
printf("IPv6 firewall control not supported by UPnP IGD!" NL); if (data.IPv6FC.controlurl[0] != 0) {
return false;
}
int firewallEnabled; int firewallEnabled;
ret = UPNP_GetFirewallStatus(urls.controlURL_6FC, data.IPv6FC.servicetype, &firewallEnabled, &pinholeAllowed); ret = UPNP_GetFirewallStatus(urls.controlURL_6FC, data.IPv6FC.servicetype, &firewallEnabled, &pinholeAllowed);
if (ret == UPNPCOMMAND_SUCCESS) { if (ret == UPNPCOMMAND_SUCCESS) {
@ -335,6 +332,10 @@ bool UPnPHandleDeviceList(struct UPNPDev* list, bool ipv6, bool enable, char* la
pinholeAllowed = false; pinholeAllowed = false;
} }
} }
else {
printf("IPv6 firewall control not supported by UPnP IGD!" NL);
}
}
} }
else { else {
ret = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, wanAddr); ret = UPNP_GetExternalIPAddress(urls.controlURL, data.first.servicetype, wanAddr);