Fix svace issues (possible memory leaks) 99/101899/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Fri, 2 Dec 2016 10:07:28 +0000 (19:07 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Fri, 2 Dec 2016 10:07:28 +0000 (19:07 +0900)
Change-Id: Ic1fc5047424c0fb97f60c35bd262795d51c9315e
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
src/my-place/visit-detector/WifiLogger.cpp
src/my-place/visit-detector/WifiLogger.h

index 4a41c19..785aecc 100644 (file)
@@ -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, std::string>(std::string(bssid), std::string(essid)));
+                       wifiLogger->__lastScansPool.insert(std::pair<std::string, std::string>(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;
 }
 
index 7c627a1..cc052fc 100644 (file)
@@ -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);