2021-08-31 05:43:16

by Yun-hao Chung

[permalink] [raw]
Subject: [Bluez PATCH v1] plugin/admin: fix set empty allowlist no persistence issue

From: Yun-Hao Chung <[email protected]>

This patch fixes a bug when setting empty service allowlist, the
allowlist sets successfully but it fails to be stored in the file.

Reviewed-by: Miao-chen Chou <[email protected]>
---
Test procedure:
1. set empty service allowlist via bluetoothctl
2. cat /var/lib/bluetooth/admin_policy_settings
3. restart bluetoothd
4. get service allowlist via bluetoothctl

plugins/admin.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/plugins/admin.c b/plugins/admin.c
index aea33cb71ac2..02fec04568ba 100644
--- a/plugins/admin.c
+++ b/plugins/admin.c
@@ -196,12 +196,17 @@ static char **new_uuid_strings(struct queue *allowlist, gsize *num)
char **uuid_strs = NULL;
gsize i = 0, allowlist_num;

+ allowlist_num = queue_length(allowlist);
+ if (!allowlist_num) {
+ *num = 0;
+ return NULL;
+ }
+
/* Set num to a non-zero number so that whoever call this could know if
* this function success or not
*/
*num = 1;

- allowlist_num = queue_length(allowlist);
uuid_strs = g_try_malloc_n(allowlist_num, sizeof(char *));
if (!uuid_strs)
return NULL;
--
2.33.0.259.gc128427fd7-goog