* [PATCH BlueZ v1 1/2] shared/gatt-db: Fix gatt_db_clone
@ 2024-06-11 16:35 Luiz Augusto von Dentz
2024-06-11 16:35 ` [PATCH BlueZ v1 2/2] settings: Add more debug logs Luiz Augusto von Dentz
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2024-06-11 16:35 UTC (permalink / raw)
To: linux-bluetooth
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
The process of cloning an existing db shall also clone certain values
that are considered when calculating the hash since the resulting clone
shall have the same hash.
---
src/shared/gatt-db.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/src/shared/gatt-db.c b/src/shared/gatt-db.c
index 16abcba2ec1c..b35763410d17 100644
--- a/src/shared/gatt-db.c
+++ b/src/shared/gatt-db.c
@@ -281,18 +281,35 @@ static void service_clone(void *data, void *user_data)
/* Only clone values for characteristics declaration since that
* is considered when calculating the db hash.
*/
- if (bt_uuid_len(&attr->uuid) == 2 &&
- attr->uuid.value.u16 == GATT_CHARAC_UUID)
+ if (bt_uuid_len(&attr->uuid) != 2) {
+ clone->attributes[i] = new_attribute(clone,
+ attr->handle,
+ &attr->uuid,
+ NULL, 0);
+ continue;
+ }
+
+ /* Attribute values that are used for generating the hash needs
+ * to be cloned as well.
+ */
+ switch (attr->uuid.value.u16) {
+ case GATT_PRIM_SVC_UUID:
+ case GATT_SND_SVC_UUID:
+ case GATT_INCLUDE_UUID:
+ case GATT_CHARAC_UUID:
clone->attributes[i] = new_attribute(clone,
attr->handle,
&attr->uuid,
attr->value,
attr->value_len);
- else
+ break;
+ default:
clone->attributes[i] = new_attribute(clone,
attr->handle,
&attr->uuid,
NULL, 0);
+ break;
+ }
}
queue_push_tail(db->services, clone);
--
2.45.2
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH BlueZ v1 2/2] settings: Add more debug logs 2024-06-11 16:35 [PATCH BlueZ v1 1/2] shared/gatt-db: Fix gatt_db_clone Luiz Augusto von Dentz @ 2024-06-11 16:35 ` Luiz Augusto von Dentz 2024-06-11 18:37 ` [BlueZ,v1,1/2] shared/gatt-db: Fix gatt_db_clone bluez.test.bot 2024-06-12 17:20 ` [PATCH BlueZ v1 1/2] " patchwork-bot+bluetooth 2 siblings, 0 replies; 4+ messages in thread From: Luiz Augusto von Dentz @ 2024-06-11 16:35 UTC (permalink / raw) To: linux-bluetooth From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> This adds more debug logs to indicate exacly where and what could not be parsed. --- src/settings.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/settings.c b/src/settings.c index 033e9670ac40..996eaacd36b2 100644 --- a/src/settings.c +++ b/src/settings.c @@ -58,13 +58,17 @@ static int load_desc(struct gatt_db *db, char *handle, char *value, uint16_t val; bt_uuid_t uuid, ext_uuid; - if (sscanf(handle, "%04hx", &handle_int) != 1) + if (sscanf(handle, "%04hx", &handle_int) != 1) { + DBG("Failed to parse handle: %s", handle); return -EIO; + } /* Check if there is any value stored, otherwise it is just the UUID */ if (sscanf(value, "%04hx:%36s", &val, uuid_str) != 2) { - if (sscanf(value, "%36s", uuid_str) != 1) + if (sscanf(value, "%36s", uuid_str) != 1) { + DBG("Failed to parse value: %s", value); return -EIO; + } val = 0; } @@ -104,8 +108,10 @@ static int load_chrc(struct gatt_db *db, char *handle, char *value, size_t val_len; bt_uuid_t uuid; - if (sscanf(handle, "%04hx", &handle_int) != 1) + if (sscanf(handle, "%04hx", &handle_int) != 1) { + DBG("Failed to parse handle: %s", handle); return -EIO; + } /* Check if there is any value stored */ if (sscanf(value, GATT_CHARAC_UUID_STR ":%04hx:%02hx:%32s:%36s", @@ -148,12 +154,16 @@ static int load_incl(struct gatt_db *db, char *handle, char *value, struct gatt_db_attribute *att; uint16_t start, end; - if (sscanf(handle, "%04hx", &start) != 1) + if (sscanf(handle, "%04hx", &start) != 1) { + DBG("Failed to parse handle: %s", handle); return -EIO; + } if (sscanf(value, GATT_INCLUDE_UUID_STR ":%04hx:%04hx:%36s", &start, - &end, uuid_str) != 3) + &end, uuid_str) != 3) { + DBG("Failed to parse value: %s", value); return -EIO; + } /* Log debug message. */ DBG("loading included service: 0x%04x, end: 0x%04x, uuid: %s", @@ -178,11 +188,15 @@ static int load_service(struct gatt_db *db, char *handle, char *value) bt_uuid_t uuid; bool primary; - if (sscanf(handle, "%04hx", &start) != 1) + if (sscanf(handle, "%04hx", &start) != 1) { + DBG("Failed to parse handle: %s", handle); return -EIO; + } - if (sscanf(value, "%[^:]:%04hx:%36s", type, &end, uuid_str) != 3) + if (sscanf(value, "%[^:]:%04hx:%36s", type, &end, uuid_str) != 3) { + DBG("Failed to parse value: %s", value); return -EIO; + } if (g_str_equal(type, GATT_PRIM_SVC_UUID_STR)) primary = true; -- 2.45.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [BlueZ,v1,1/2] shared/gatt-db: Fix gatt_db_clone 2024-06-11 16:35 [PATCH BlueZ v1 1/2] shared/gatt-db: Fix gatt_db_clone Luiz Augusto von Dentz 2024-06-11 16:35 ` [PATCH BlueZ v1 2/2] settings: Add more debug logs Luiz Augusto von Dentz @ 2024-06-11 18:37 ` bluez.test.bot 2024-06-12 17:20 ` [PATCH BlueZ v1 1/2] " patchwork-bot+bluetooth 2 siblings, 0 replies; 4+ messages in thread From: bluez.test.bot @ 2024-06-11 18:37 UTC (permalink / raw) To: linux-bluetooth, luiz.dentz [-- Attachment #1: Type: text/plain, Size: 949 bytes --] 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=860868 ---Test result--- Test Summary: CheckPatch PASS 1.03 seconds GitLint PASS 0.71 seconds BuildEll PASS 25.32 seconds BluezMake PASS 1756.78 seconds MakeCheck PASS 13.33 seconds MakeDistcheck PASS 185.65 seconds CheckValgrind PASS 260.47 seconds CheckSmatch PASS 366.67 seconds bluezmakeextell PASS 122.96 seconds IncrementalBuild PASS 3149.71 seconds ScanBuild PASS 1051.62 seconds --- Regards, Linux Bluetooth ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH BlueZ v1 1/2] shared/gatt-db: Fix gatt_db_clone 2024-06-11 16:35 [PATCH BlueZ v1 1/2] shared/gatt-db: Fix gatt_db_clone Luiz Augusto von Dentz 2024-06-11 16:35 ` [PATCH BlueZ v1 2/2] settings: Add more debug logs Luiz Augusto von Dentz 2024-06-11 18:37 ` [BlueZ,v1,1/2] shared/gatt-db: Fix gatt_db_clone bluez.test.bot @ 2024-06-12 17:20 ` patchwork-bot+bluetooth 2 siblings, 0 replies; 4+ messages in thread From: patchwork-bot+bluetooth @ 2024-06-12 17:20 UTC (permalink / raw) To: Luiz Augusto von Dentz; +Cc: linux-bluetooth Hello: This series was applied to bluetooth/bluez.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Tue, 11 Jun 2024 12:35:41 -0400 you wrote: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > The process of cloning an existing db shall also clone certain values > that are considered when calculating the hash since the resulting clone > shall have the same hash. > --- > src/shared/gatt-db.c | 23 ++++++++++++++++++++--- > 1 file changed, 20 insertions(+), 3 deletions(-) Here is the summary with links: - [BlueZ,v1,1/2] shared/gatt-db: Fix gatt_db_clone https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=a37e475f7252 - [BlueZ,v1,2/2] settings: Add more debug logs https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=891552999317 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-06-12 17:20 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-11 16:35 [PATCH BlueZ v1 1/2] shared/gatt-db: Fix gatt_db_clone Luiz Augusto von Dentz 2024-06-11 16:35 ` [PATCH BlueZ v1 2/2] settings: Add more debug logs Luiz Augusto von Dentz 2024-06-11 18:37 ` [BlueZ,v1,1/2] shared/gatt-db: Fix gatt_db_clone bluez.test.bot 2024-06-12 17:20 ` [PATCH BlueZ v1 1/2] " patchwork-bot+bluetooth
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.