From a9193a757a510e07e69b18ca64d2e50d467f01c1 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12@gmail.com>
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(-)

(limited to 'components/wifi.c')

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