diff options
author | Jouni Malinen <j@w1.fi> | 2012-07-07 13:01:45 +0300 |
---|---|---|
committer | Jouni Malinen <j@w1.fi> | 2012-07-07 13:01:45 +0300 |
commit | a5ed45586c63ffd8f9d2b44e27c251d7bacbeaf4 (patch) | |
tree | e1172cf85a9d888a076dd33118bfc86bcbfa73f3 | |
parent | 19991e5fb29a7f0701024e4e7ddd03b7c7b59619 (diff) | |
download | external_wpa_supplicant_8_ti-a5ed45586c63ffd8f9d2b44e27c251d7bacbeaf4.zip external_wpa_supplicant_8_ti-a5ed45586c63ffd8f9d2b44e27c251d7bacbeaf4.tar.gz external_wpa_supplicant_8_ti-a5ed45586c63ffd8f9d2b44e27c251d7bacbeaf4.tar.bz2 |
WPS SSDP: Fix socket leaks on error paths
Signed-hostap: Jouni Malinen <j@w1.fi>
-rw-r--r-- | src/wps/wps_upnp_ssdp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/wps/wps_upnp_ssdp.c b/src/wps/wps_upnp_ssdp.c index 4c4aebf..17a8207 100644 --- a/src/wps/wps_upnp_ssdp.c +++ b/src/wps/wps_upnp_ssdp.c @@ -866,20 +866,24 @@ int ssdp_open_multicast_sock(u32 ip_addr) return -1; #if 0 /* maybe ok if we sometimes block on writes */ - if (fcntl(sd, F_SETFL, O_NONBLOCK) != 0) + if (fcntl(sd, F_SETFL, O_NONBLOCK) != 0) { + close(sd); return -1; + } #endif if (setsockopt(sd, IPPROTO_IP, IP_MULTICAST_IF, &ip_addr, sizeof(ip_addr))) { wpa_printf(MSG_DEBUG, "WPS: setsockopt(IP_MULTICAST_IF) %x: " "%d (%s)", ip_addr, errno, strerror(errno)); + close(sd); return -1; } if (setsockopt(sd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl))) { wpa_printf(MSG_DEBUG, "WPS: setsockopt(IP_MULTICAST_TTL): " "%d (%s)", errno, strerror(errno)); + close(sd); return -1; } @@ -898,6 +902,7 @@ int ssdp_open_multicast_sock(u32 ip_addr) "WPS UPnP: setsockopt " "IP_ADD_MEMBERSHIP errno %d (%s)", errno, strerror(errno)); + close(sd); return -1; } } |