fix memory leak issue using valgrind tool. 07/71107/1 accepted/tizen/common/20160524.150632 accepted/tizen/ivi/20160524.095727 accepted/tizen/mobile/20160524.095745 accepted/tizen/tv/20160524.095609 accepted/tizen/wearable/20160524.095755 submit/tizen/20160524.065333 submit/tizen/20160524.065354
authorHyihong Chae <hh.chae@samsung.com>
Tue, 24 May 2016 06:42:48 +0000 (15:42 +0900)
committerHyihong Chae <hh.chae@samsung.com>
Tue, 24 May 2016 06:42:48 +0000 (15:42 +0900)
Change-Id: Ib47915ef6fff57582a8d40d8e5ba1d2b71587d5d
Signed-off-by: HyiHong Chae <hh.chae@samsung.com>
packaging/smartcard-service.spec
server/ServerGDBus.cpp
server/ServiceInstance.cpp [changed mode: 0644->0755]
server/smartcard-daemon.cpp

index 578a6fa0294ac64d1fae552f4801799c914af97e..182016b09bdf322448273e170a4892961ed08472 100755 (executable)
@@ -7,7 +7,7 @@
 ################################################################################
 Name:       smartcard-service
 Summary:    Smartcard Service FW
-Version:    0.1.47
+Version:    0.1.48
 Release:    0
 Group:      libs
 License:    Apache-2.0
index 2a85d6370f309ab63a3ce0dec2ab212dc379240b..8a10dd413536cb580b7f640975ceff195c1bc42b 100755 (executable)
@@ -177,6 +177,10 @@ namespace smartcard_service_api
 
                name_owner_changed((GDBusProxy *)connection,
                        name, old_owner, new_owner, user_data);
+
+               g_free(name);
+               g_free(old_owner);
+               g_free(new_owner);
        }
 
        bool ServerGDBus::_init()
@@ -331,6 +335,7 @@ namespace smartcard_service_api
                ret = cynara_creds_gdbus_get_client(connection, sender_unique_name, CLIENT_METHOD_DEFAULT, &client);
                if (ret != CYNARA_API_SUCCESS) {
                        _ERR("cynara_creds_gdbus_get_client() failed");
+                       g_free(user);
                        return false;
                }
 
@@ -338,11 +343,27 @@ namespace smartcard_service_api
 
                client_session = cynara_session_from_pid(pid);
 
+               if (!client_session) {
+                       _ERR("cynara_session_from_pid() failed");
+                       g_free(client);
+                       g_free(user);
+                       return false;
+               }
+
                ret = cynara_check(p_cynara, client, client_session, user, SMARTCARD_PRIVILEGE);
                if ( ret == CYNARA_API_ACCESS_ALLOWED ) {
                        _INFO("cynara PASS");
                }
 
+               g_free(client_session);
+               g_free(client);
+               g_free(user);
+
+               if (p_cynara) {
+                       cynara_finish(p_cynara);
+                       p_cynara = NULL;
+               }
+
                return (ret == CYNARA_API_ACCESS_ALLOWED ) ? true : false;
        }
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index c7c1129..993dc8e
@@ -93,6 +93,8 @@ namespace smartcard_service_api
                        mapSessions.erase(item);
 
                        IntegerHandle::releaseHandle(session);
+
+                       delete item->second.first;
                }
        }
 
@@ -107,6 +109,8 @@ namespace smartcard_service_api
                        item->second.first->closeSync();
 
                        IntegerHandle::releaseHandle(item->first);
+
+                       delete item->second.first;
                }
 
                mapSessions.clear();
index cb9c75fbc9dd86d7f87d331bbd155bb3e0ddc25d..b58384dfdad45f4343e578ac6349110bfa02fb56 100755 (executable)
@@ -123,7 +123,7 @@ int main(int argc, char *argv[])
        daemonize();
 #endif
 
-       main_loop = g_main_new(TRUE);
+       main_loop = g_main_loop_new(NULL, FALSE);
 
        id = g_bus_own_name(G_BUS_TYPE_SYSTEM,
                        "org.tizen.SmartcardService",
@@ -148,4 +148,5 @@ int main(int argc, char *argv[])
 void smartcard_daemon_exit()
 {
        g_main_loop_quit(main_loop);
+       g_main_loop_unref(main_loop);
 }