client: Don't expose pointer value in attribute path
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 30 Jan 2019 13:24:18 +0000 (15:24 +0200)
committerhimanshu <h.himanshu@samsung.com>
Wed, 22 Jan 2020 13:47:12 +0000 (19:17 +0530)
Instead use the position in the list to create a unique path:

[bluetooth]# register-service 0x1820
[NEW] Primary Service (Handle 0x0000)
/org/bluez/app/service0
0x1820
Internet Protocol Support

Change-Id: I79485003fd2b645ff5e8698c98f52ba4ae9ce8cd
Signed-off-by: himanshu <h.himanshu@samsung.com>
client/gatt.c

index 9a43c34..6d30aa4 100755 (executable)
@@ -1448,7 +1448,8 @@ void gatt_register_service(DBusConnection *conn, GDBusProxy *proxy,
        service = g_new0(struct service, 1);
        service->conn = conn;
        service->uuid = g_strdup(argv[1]);
-       service->path = g_strdup_printf("%s/service%p", APP_PATH, service);
+       service->path = g_strdup_printf("%s/service%u", APP_PATH,
+                                       g_list_length(local_services));
        service->primary = primary;
 
        if (argc > 2)
@@ -2329,7 +2330,8 @@ void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy,
        chrc = g_new0(struct chrc, 1);
        chrc->service = service;
        chrc->uuid = g_strdup(argv[1]);
-       chrc->path = g_strdup_printf("%s/chrc%p", service->path, chrc);
+       chrc->path = g_strdup_printf("%s/chrc%u", service->path,
+                                       g_list_length(service->chrcs));
        chrc->flags = g_strsplit(argv[2], ",", -1);
        chrc->authorization_req = attr_authorization_flag_exists(chrc->flags);
 
@@ -2599,7 +2601,8 @@ void gatt_register_desc(DBusConnection *conn, GDBusProxy *proxy,
        desc = g_new0(struct desc, 1);
        desc->chrc = g_list_last(service->chrcs)->data;
        desc->uuid = g_strdup(argv[1]);
-       desc->path = g_strdup_printf("%s/desc%p", desc->chrc->path, desc);
+       desc->path = g_strdup_printf("%s/desc%u", desc->chrc->path,
+                                       g_list_length(desc->chrc->descs));
        desc->flags = g_strsplit(argv[2], ",", -1);
 
        if (argc > 3)