Fix the memory leak 04/183204/1
authorinjun.yang <injun.yang@samsung.com>
Tue, 3 Jul 2018 09:32:46 +0000 (18:32 +0900)
committerinjun.yang <injun.yang@samsung.com>
Tue, 3 Jul 2018 09:32:46 +0000 (18:32 +0900)
Change-Id: I59acfc652c1bcf742e919c456fcee15ac34e25d6
Signed-off-by: injun.yang <injun.yang@samsung.com>
bt-service/bt-request-handler.c
bt-service/bt-service-adapter.c
bt-service/bt-service-device.c
bt-service/bt-service-event-receiver.c

index 99613bc..e1a0362 100644 (file)
@@ -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:
index 205082a..1ce4ca3 100644 (file)
@@ -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;
index 98da9f8..3a50a4e 100644 (file)
@@ -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;
index 53af13b..8fe05a1 100644 (file)
@@ -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;