From: Syam Sidhardhan Date: Mon, 31 Jul 2017 09:07:36 +0000 (+0530) Subject: bt_service: map: Fix proxy leak and double unref X-Git-Tag: submit/tizen_3.0/20171207.001107~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=d096b97ff521e5cd1379fd5b7cec95f260bce4d0;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git bt_service: map: Fix proxy leak and double unref We need to unref the session proxy. We need to avoid double unref (error) Memory leak: session_proxy (error) Memory pointed to by 'value' is freed twice Change-Id: I94324727ecdc1f586eacb8f785206098b2a648ad Signed-off-by: Syam Sidhardhan --- diff --git a/bt-service/bt-service-map-client.c b/bt-service/bt-service-map-client.c index d6bc887..3ea576d 100644 --- a/bt-service/bt-service-map-client.c +++ b/bt-service/bt-service-map-client.c @@ -115,6 +115,9 @@ int _bt_create_session_sync(const char* address, char** session_id) GVariant *value = g_dbus_proxy_call_sync(session_proxy, "CreateSession", param, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err); + + g_object_unref(session_proxy); + if (err != NULL) { BT_ERR("Could not create session: %s\n", err->message); g_error_free(err); @@ -162,6 +165,9 @@ int _bt_destroy_session_sync(const char* session_id) g_dbus_proxy_call_sync(session_proxy, "RemoveSession", param, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err); + + g_object_unref(session_proxy); + if (err != NULL) { BT_ERR("Could not remove session: %s\n", err->message); g_error_free(err); @@ -579,10 +585,8 @@ static void __bt_push_message_cb(GDBusProxy *proxy, g_clear_error(&error); } - if (value) { + if (value) g_variant_get(value, "(oa{sv})", &transfer_object_path, &iter); - g_variant_unref(value); - } BT_DBG("transfer object path: [%s]", transfer_object_path); @@ -686,10 +690,8 @@ static void __bt_get_message_cb(GDBusProxy *proxy, g_clear_error(&error); } - if (value) { + if (value) g_variant_get(value, "(oa{sv})", &transfer_object_path, &iter); - g_variant_unref(value); - } BT_DBG("transfer object path: [%s]", transfer_object_path);