From 88fc42229b16afd32a122393bba81dc2e54823ec Mon Sep 17 00:00:00 2001 From: Mu-Woong Lee Date: Fri, 2 Dec 2016 19:07:28 +0900 Subject: [PATCH] Fix svace issues (possible memory leaks) Change-Id: Ic1fc5047424c0fb97f60c35bd262795d51c9315e Signed-off-by: Mu-Woong Lee --- src/my-place/visit-detector/WifiLogger.cpp | 32 +++++++++++++++------- src/my-place/visit-detector/WifiLogger.h | 4 +-- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/my-place/visit-detector/WifiLogger.cpp b/src/my-place/visit-detector/WifiLogger.cpp index 4a41c19..785aecc 100644 --- a/src/my-place/visit-detector/WifiLogger.cpp +++ b/src/my-place/visit-detector/WifiLogger.cpp @@ -147,13 +147,13 @@ bool ctx::WifiLogger::__wifiFoundApCb(wifi_ap_h ap, void *userData) { ctx::WifiLogger* wifiLogger = (ctx::WifiLogger *)userData; - char *bssid = NULL; - int ret = wifiLogger->__wifiApGetBssidRequest(ap, &bssid); + std::string bssid; + int ret = wifiLogger->__wifiApGetBssidRequest(ap, bssid); if (ret != WIFI_ERROR_NONE) return false; - char *essid = NULL; - ret = wifiLogger->__wifiApGetEssidRequest(ap, &essid); + std::string essid; + ret = wifiLogger->__wifiApGetEssidRequest(ap, essid); if (ret != WIFI_ERROR_NONE) return false; @@ -165,13 +165,13 @@ bool ctx::WifiLogger::__wifiFoundApCb(wifi_ap_h ap, void *userData) return false; } - MacEvent log(wifiLogger->__lastScanTime, mac, std::string(essid)); + MacEvent log(wifiLogger->__lastScanTime, mac, essid); if (wifiLogger->__listener) { wifiLogger->__listener->onWifiScan(log); if (WIFI_LOGGER_LOW_POWER_MODE && (wifiLogger->__connectedToWifiAp || wifiLogger->__duringVisit) ) { // Add to last scans AP's set - wifiLogger->__lastScansPool.insert(std::pair(std::string(bssid), std::string(essid))); + wifiLogger->__lastScansPool.insert(std::pair(bssid, essid)); } } if (WIFI_LOGGER_DATABASE) @@ -291,17 +291,29 @@ void ctx::WifiLogger::__wifiSetConnectionStateChangedCbRequest() __WIFI_ERROR_LOG(ret); } -int ctx::WifiLogger::__wifiApGetEssidRequest(wifi_ap_h ap, char **essid) +int ctx::WifiLogger::__wifiApGetEssidRequest(wifi_ap_h ap, std::string &essid) { - int ret = __wifiWrapper.getEssidFromAP(ap, essid); + char *_essid = NULL; + int ret = __wifiWrapper.getEssidFromAP(ap, &_essid); __WIFI_ERROR_LOG(ret); + + if (ret == WIFI_ERROR_NONE && _essid) + essid = _essid; + + free(_essid); return ret; } -int ctx::WifiLogger::__wifiApGetBssidRequest(wifi_ap_h ap, char **bssid) +int ctx::WifiLogger::__wifiApGetBssidRequest(wifi_ap_h ap, std::string &bssid) { - int ret = __wifiWrapper.getBssidFromAP(ap, bssid); + char *_bssid = NULL; + int ret = __wifiWrapper.getBssidFromAP(ap, &_bssid); __WIFI_ERROR_LOG(ret); + + if (ret == WIFI_ERROR_NONE && _bssid) + bssid = _bssid; + + free(_bssid); return ret; } diff --git a/src/my-place/visit-detector/WifiLogger.h b/src/my-place/visit-detector/WifiLogger.h index 7c627a1..cc052fc 100644 --- a/src/my-place/visit-detector/WifiLogger.h +++ b/src/my-place/visit-detector/WifiLogger.h @@ -89,8 +89,8 @@ namespace ctx { void __wifiScanRequest(); int __wifiForeachFoundApsRequest(void *userData); wifi_connection_state_e __wifiGetConnectionStateRequest(); - int __wifiApGetEssidRequest(wifi_ap_h ap, char **essid); - int __wifiApGetBssidRequest(wifi_ap_h ap, char **bssid); + int __wifiApGetEssidRequest(wifi_ap_h ap, std::string &essid); + int __wifiApGetBssidRequest(wifi_ap_h ap, std::string &bssid); /* SYSTEM CAPI CALLBACKS */ static void __wifiDeviceStateChangedCb(wifi_device_state_e state, void *userData); -- 2.34.1