From dbbd965427ca7fbff53785b993005fc358b08588 Mon Sep 17 00:00:00 2001 From: Hyihong Chae Date: Wed, 25 May 2016 17:32:34 +0900 Subject: [PATCH] [TSAM-3298]fixed memory leak issue. Change-Id: I8bd86ecfe4ede343585a4c3aad79d05505763d3a Signed-off-by: HyiHong Chae --- packaging/nfc-manager.spec | 2 +- src/manager/net_nfc_manager.c | 2 ++ src/manager/net_nfc_server.c | 5 +++++ src/manager/net_nfc_server_context.c | 17 +++++++++++++++++ src/manager/net_nfc_server_se.c | 6 ++++++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/packaging/nfc-manager.spec b/packaging/nfc-manager.spec index 8fed3c4..1170237 100755 --- a/packaging/nfc-manager.spec +++ b/packaging/nfc-manager.spec @@ -1,6 +1,6 @@ Name: nfc-manager Summary: NFC framework manager -Version: 0.1.147 +Version: 0.1.148 Release: 0 Group: Network & Connectivity/NFC License: Flora-1.1 diff --git a/src/manager/net_nfc_manager.c b/src/manager/net_nfc_manager.c index 69a2e08..d3e0acd 100755 --- a/src/manager/net_nfc_manager.c +++ b/src/manager/net_nfc_manager.c @@ -196,6 +196,8 @@ int main(int argc, char *argv[]) g_main_loop_run(loop); EXIT : + g_main_loop_unref(loop); + net_nfc_server_vconf_deinit(); net_nfc_server_gdbus_deinit(); diff --git a/src/manager/net_nfc_server.c b/src/manager/net_nfc_server.c index 2d250ef..5930f32 100755 --- a/src/manager/net_nfc_server.c +++ b/src/manager/net_nfc_server.c @@ -59,6 +59,7 @@ pid_t net_nfc_server_gdbus_get_pid(const char *name) g_variant_get(_ret, "(u)", &pid); g_variant_unref(_ret); } + g_error_free(error); return pid; } @@ -98,6 +99,10 @@ static void _on_name_owner_changed(GDBusConnection *connection, _name_owner_changed((GDBusProxy *)connection, name, old_owner, new_owner, user_data); + + g_free(name); + g_free(old_owner); + g_free(new_owner); } static void _subscribe_name_owner_changed_event() diff --git a/src/manager/net_nfc_server_context.c b/src/manager/net_nfc_server_context.c index c96feb6..eb57993 100755 --- a/src/manager/net_nfc_server_context.c +++ b/src/manager/net_nfc_server_context.c @@ -145,6 +145,7 @@ static bool _get_credentials(GDBusMethodInvocation *invocation, net_nfc_privileg ret = cynara_creds_gdbus_get_client(connection, sender_unique_name, CLIENT_METHOD_DEFAULT, &client); if (ret != CYNARA_API_SUCCESS) { DEBUG_SERVER_MSG("cynara_creds_gdbus_get_client() failed"); + g_free(user); return false; } @@ -177,10 +178,26 @@ static bool _get_credentials(GDBusMethodInvocation *invocation, net_nfc_privileg client_session = cynara_session_from_pid(pid); + if (!client_session) { + DEBUG_SERVER_MSG("cynara_session_from_pid() failed"); + g_free(client); + g_free(user); + return false; + } + ret = cynara_check(p_cynara, client, client_session, user, privilege); if (ret == CYNARA_API_ACCESS_ALLOWED) INFO_MSG("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 diff --git a/src/manager/net_nfc_server_se.c b/src/manager/net_nfc_server_se.c index c04caa4..a76b7a9 100755 --- a/src/manager/net_nfc_server_se.c +++ b/src/manager/net_nfc_server_se.c @@ -691,6 +691,7 @@ static void _sim_apdu_cb(TapiHandle *handle, int result, GMainLoop *loop = (GMainLoop *)user_data; g_main_loop_quit(loop); + g_main_loop_unref(loop); } static void _sim_atr_cb(TapiHandle *handle, int result, @@ -700,6 +701,7 @@ static void _sim_atr_cb(TapiHandle *handle, int result, GMainLoop *loop = (GMainLoop *)user_data; g_main_loop_quit(loop); + g_main_loop_unref(loop); } @@ -1894,6 +1896,10 @@ END : data->object, data->invocation, result); + + g_object_unref(data->invocation); + g_object_unref(data->object); + g_free(data); } static gboolean se_handle_get_card_emulation_mode( -- 2.7.4