2022-09-21 21:55:19

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ 1/3] gatt: Fix not setting permissions for CCC

From: Luiz Augusto von Dentz <[email protected]>

CCC shall always have both Read and Write permissions set in addition to
what application set.

Fixes: https://github.com/bluez/bluez/issues/399
---
src/gatt-database.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/gatt-database.c b/src/gatt-database.c
index 89a3dc47560b..a212dfc4e694 100644
--- a/src/gatt-database.c
+++ b/src/gatt-database.c
@@ -1238,7 +1238,8 @@ static void populate_gatt_service(struct btd_gatt_database *database)
NULL, NULL, database);

database->svc_chngd_ccc = service_add_ccc(service, database, NULL, NULL,
- 0, NULL);
+ BT_ATT_PERM_READ |
+ BT_ATT_PERM_WRITE, NULL);

bt_uuid16_create(&uuid, GATT_CHARAC_CLI_FEAT);
database->cli_feat = gatt_db_service_add_characteristic(service,
@@ -1726,8 +1727,10 @@ static bool parse_chrc_flags(DBusMessageIter *array, uint8_t *props,
*perm |= BT_ATT_PERM_WRITE;
} else if (!strcmp("notify", flag)) {
*props |= BT_GATT_CHRC_PROP_NOTIFY;
+ *ccc_perm |= BT_ATT_PERM_WRITE;
} else if (!strcmp("indicate", flag)) {
*props |= BT_GATT_CHRC_PROP_INDICATE;
+ *ccc_perm |= BT_ATT_PERM_WRITE;
} else if (!strcmp("authenticated-signed-writes", flag)) {
*props |= BT_GATT_CHRC_PROP_AUTH;
*perm |= BT_ATT_PERM_WRITE;
@@ -2896,6 +2899,9 @@ static bool database_add_ccc(struct external_service *service,
!(chrc->props & BT_GATT_CHRC_PROP_INDICATE))
return true;

+ /* Always set read/write permissions */
+ chrc->ccc_perm |= BT_ATT_PERM_WRITE | BT_ATT_PERM_READ;
+
chrc->ccc = service_add_ccc(service->attrib, service->app->database,
ccc_write_cb, chrc, chrc->ccc_perm, NULL);
if (!chrc->ccc) {
--
2.37.3


2022-09-21 23:38:17

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ,1/3] gatt: Fix not setting permissions for CCC

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=679174

---Test result---

Test Summary:
CheckPatch PASS 3.42 seconds
GitLint PASS 2.26 seconds
Prep - Setup ELL PASS 26.17 seconds
Build - Prep PASS 0.68 seconds
Build - Configure PASS 8.15 seconds
Build - Make PASS 740.85 seconds
Make Check PASS 10.95 seconds
Make Check w/Valgrind PASS 287.39 seconds
Make Distcheck PASS 237.16 seconds
Build w/ext ELL - Configure PASS 8.19 seconds
Build w/ext ELL - Make PASS 83.30 seconds
Incremental Build w/ patches PASS 294.92 seconds
Scan Build WARNING 509.27 seconds

Details
##############################
Test: Scan Build - WARNING
Desc: Run Scan Build with patches
Output:
*****************************************************************************
The bugs reported by the scan-build may or may not be caused by your patches.
Please check the list and fix the bugs if they are caused by your patch.
*****************************************************************************
src/gatt-database.c:1138:10: warning: Value stored to 'bits' during its initialization is never read
uint8_t bits[] = { BT_GATT_CHRC_CLI_FEAT_ROBUST_CACHING,
^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gatt-database.c:3541:14: warning: Value stored to 'iface' during its initialization is never read
const char *iface = g_dbus_proxy_get_interface(proxy);
^~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gatt-database.c:3542:14: warning: Value stored to 'path' during its initialization is never read
const char *path = g_dbus_proxy_get_path(proxy);
^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 warnings generated.




---
Regards,
Linux Bluetooth

2022-09-22 01:11:37

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH BlueZ 1/3] gatt: Fix not setting permissions for CCC

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Wed, 21 Sep 2022 14:46:54 -0700 you wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> CCC shall always have both Read and Write permissions set in addition to
> what application set.
>
> Fixes: https://github.com/bluez/bluez/issues/399
>
> [...]

Here is the summary with links:
- [BlueZ,1/3] gatt: Fix not setting permissions for CCC
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=fbf17ac497bb
- [BlueZ,2/3] gatt-db: Check if permissions are set when adding CCC
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=50782b0eeb05
- [BlueZ,3/3] client/gatt: Fix notification enabled/disabled output
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=c2734c41f7c0

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html