From: injun.yang Date: Tue, 3 Jul 2018 09:32:46 +0000 (+0900) Subject: Fix the memory leak X-Git-Tag: submit/tizen/20180710.070923~13 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git;a=commitdiff_plain;h=a7ea002971e8c1b8d0b522678409413cc00efdc3 Fix the memory leak Change-Id: I59acfc652c1bcf742e919c456fcee15ac34e25d6 Signed-off-by: injun.yang --- diff --git a/bt-service/bt-request-handler.c b/bt-service/bt-request-handler.c index 99613bc..e1a0362 100644 --- a/bt-service/bt-request-handler.c +++ b/bt-service/bt-request-handler.c @@ -153,6 +153,7 @@ static void __bt_service_method(GDBusConnection *connection, gpointer user_data) { FN_START; + BT_DBG("Method[%s] Object Path[%s] Interface Name[%s]", method_name, object_path, interface_name); @@ -258,18 +259,15 @@ static void __bt_service_method(GDBusConnection *connection, GVariant *temp = g_variant_new("(iv)", result, out_var); g_dbus_method_invocation_return_value(invocation, temp); - - g_array_free(out_param1, TRUE); - out_param1 = NULL; } } + g_array_free(out_param1, TRUE); g_variant_unref(param1); g_variant_unref(param2); g_variant_unref(param3); g_variant_unref(param4); g_variant_unref(param5); -// g_free(sender); FN_END; return; fail: diff --git a/bt-service/bt-service-adapter.c b/bt-service/bt-service-adapter.c index 205082a..1ce4ca3 100644 --- a/bt-service/bt-service-adapter.c +++ b/bt-service/bt-service-adapter.c @@ -283,6 +283,7 @@ static int __bt_get_bonded_device_info(gchar *device_path, GDBusProxy *device_proxy; gchar *address = NULL; gchar *name = NULL; + gchar *alias = NULL; unsigned int cod = 0; gint rssi = 0; gboolean trust = FALSE; @@ -341,10 +342,9 @@ static int __bt_get_bonded_device_info(gchar *device_path, } else if (!g_strcmp0(key, "Address")) { g_variant_get(value, "s", &address); } else if (!g_strcmp0(key, "Alias")) { - g_variant_get(value, "s", &name); + g_variant_get(value, "s", &alias); } else if (!g_strcmp0(key, "Name")) { - if (!name) - g_variant_get(value, "s", &name); + g_variant_get(value, "s", &name); } else if (!g_strcmp0(key, "Class")) { cod = g_variant_get_uint32(value); } else if (!g_strcmp0(key, "Connected")) { @@ -382,6 +382,7 @@ static int __bt_get_bonded_device_info(gchar *device_path, if ((paired == FALSE) && (trust == FALSE)) { g_free(address); + g_free(alias); g_free(name); return BLUETOOTH_ERROR_NOT_PAIRED; } @@ -391,7 +392,7 @@ static int __bt_get_bonded_device_info(gchar *device_path, _bt_divide_device_class(&dev_info->device_class, cod); - g_strlcpy(dev_info->device_name.name, name, + g_strlcpy(dev_info->device_name.name, alias ? alias : name, BLUETOOTH_DEVICE_NAME_LENGTH_MAX+1); dev_info->rssi = rssi; @@ -400,6 +401,7 @@ static int __bt_get_bonded_device_info(gchar *device_path, dev_info->connected = connected; ret = BLUETOOTH_ERROR_NONE; g_free(address); + g_free(alias); g_free(name); return ret; diff --git a/bt-service/bt-service-device.c b/bt-service/bt-service-device.c index 98da9f8..3a50a4e 100644 --- a/bt-service/bt-service-device.c +++ b/bt-service/bt-service-device.c @@ -490,9 +490,8 @@ bt_remote_dev_info_t *_bt_get_remote_device_info_by_object_path( g_variant_get(tmp_value, "s", &address); g_variant_unref(tmp_value); - dev_info->address = g_strdup(address); - dev_info->name = g_strdup(name); - g_free(name); + dev_info->address = address; + dev_info->name = name; g_variant_unref(value); } else { BT_ERR("result is NULL\n"); @@ -3118,21 +3117,16 @@ int _bt_get_device_ida(bluetooth_device_address_t *device_address, retv_if(device_path == NULL, BLUETOOTH_ERROR_NOT_PAIRED); device_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE, - NULL, BT_BLUEZ_NAME, - device_path, BT_DEVICE_INTERFACE, NULL, NULL); + NULL, BT_BLUEZ_NAME, + device_path, BT_DEVICE_INTERFACE, NULL, NULL); g_free(device_path); if (!device_proxy) { BT_ERR("Unable to get proxy"); return BLUETOOTH_ERROR_INTERNAL; } - result = g_dbus_proxy_call_sync(device_proxy, "GetIDAddress", - NULL, - G_DBUS_CALL_FLAGS_NONE, - -1, - NULL, - &error); - + result = g_dbus_proxy_call_sync(device_proxy, "GetIDAddress", NULL, + G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); if (result == NULL) { BT_ERR("Failed to get device ID address"); if (error != NULL) { @@ -3143,22 +3137,16 @@ int _bt_get_device_ida(bluetooth_device_address_t *device_address, return BLUETOOTH_ERROR_INTERNAL; } - g_variant_get(result , "(s)", &idaddress); - g_variant_unref(result); - + g_variant_get(result , "(&s)", &idaddress); if (idaddress == NULL) { BT_ERR("No paired device"); - g_object_unref(device_proxy); - return BLUETOOTH_ERROR_NOT_PAIRED; - } - - BT_DBG("ID Address:%s", idaddress); - - if (idaddress) + ret = BLUETOOTH_ERROR_NOT_PAIRED; + } else { + DBG_SECURE("ID Address : %s", idaddress); _bt_convert_addr_string_to_type(id_address->addr, idaddress); - else - ret = BLUETOOTH_ERROR_INTERNAL; + } + g_variant_unref(result); g_object_unref(device_proxy); return ret; diff --git a/bt-service/bt-service-event-receiver.c b/bt-service/bt-service-event-receiver.c index 53af13b..8fe05a1 100644 --- a/bt-service/bt-service-event-receiver.c +++ b/bt-service/bt-service-event-receiver.c @@ -2162,7 +2162,7 @@ void _bt_handle_device_event(GVariant *msg, const char *member, const char *path le_dev_info = g_malloc0(sizeof(bt_remote_le_dev_info_t)); - g_variant_get(msg, "(syyii@ay)", &le_dev_info->address, + g_variant_get(msg, "(&syyii@ay)", &le_dev_info->address, &le_dev_info->addr_type, &le_dev_info->adv_type, &le_dev_info->rssi, @@ -2700,17 +2700,15 @@ static void __bt_manager_event_filter(GDBusConnection *connection, bt_cache_info_t *cache_info; bt_remote_dev_info_t *dev_info; - ret_if(_bt_is_discovering() == FALSE && - _bt_is_le_scanning() == FALSE); + if (_bt_is_discovering() == FALSE && + _bt_is_le_scanning() == FALSE) { + g_variant_unref(value); + return; + } cache_info = g_malloc0(sizeof(bt_cache_info_t)); - ret_if(cache_info == NULL); dev_info = g_malloc0(sizeof(bt_remote_dev_info_t)); - if (dev_info == NULL) { - __bt_free_cache_info(cache_info); - return; - } cache_info->dev_info = dev_info;