From a9193a757a510e07e69b18ca64d2e50d467f01c1 Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Wed, 13 Feb 2019 14:16:17 +0000 Subject: close file descriptors and fix return values --- components/wifi.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/components/wifi.c b/components/wifi.c index d99c46c..92c252e 100644 --- a/components/wifi.c +++ b/components/wifi.c @@ -211,14 +211,16 @@ int rssi_dbm; int sockfd; size_t len; + const char *fmt; if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { warn("socket 'AF_INET':"); - return 0; + return NULL; } /* Retreive MAC address of interface */ len = IEEE80211_ADDR_LEN; + fmt = NULL; if (load_ieee80211req(sockfd, interface, &bssid, IEEE80211_IOC_BSSID, &len)) { /* Retrieve info on station with above BSSID */ @@ -229,12 +231,13 @@ if (load_ieee80211req(sockfd, interface, &info, IEEE80211_IOC_STA_INFO, &len)) { rssi_dbm = info.sta.info[0].isi_noise + info.sta.info[0].isi_rssi / 2; - return bprintf("%d", RSSI_TO_PERC(rssi_dbm)); + + fmt = bprintf("%d", RSSI_TO_PERC(rssi_dbm)); } } close(sockfd); - return NULL; + return fmt; } const char * @@ -243,12 +246,14 @@ char ssid[IEEE80211_NWID_LEN + 1]; size_t len; int sockfd; + const char *fmt; if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { warn("socket 'AF_INET':"); - return 0; + return NULL; } + fmt = NULL; len = sizeof(ssid); memset(&ssid, 0, len); if (load_ieee80211req(sockfd, interface, &ssid, IEEE80211_IOC_SSID, &len )) { @@ -258,9 +263,10 @@ len = sizeof(ssid); ssid[len - 1] = '\0'; - return bprintf("%s", ssid); + fmt = bprintf("%s", ssid); } - return NULL; + close(sockfd); + return fmt; } #endif -- cgit v1.2.3