[PATCH] shared/gatt-db: Fix memory comparison error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Miao-chen Chou <mcchou@xxxxxxxxxxxx>

This fixes the use of memcmp where the length of comparison is longer than the
memories to be compared. Since unit/test-gatt make use of gatt-db, if compiled
with ASan, unit/test-gatt would fail.
---
 src/shared/gatt-db.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/shared/gatt-db.c b/src/shared/gatt-db.c
index 8ef6f3bca..2dd73b997 100644
--- a/src/shared/gatt-db.c
+++ b/src/shared/gatt-db.c
@@ -1013,10 +1013,15 @@ static void find_by_type(void *data, void *user_data)
 			continue;

 		/* TODO: fix for read-callback based attributes */
-		if (search_data->value && memcmp(attribute->value,
-							search_data->value,
-							search_data->value_len))
-			continue;
+		if (search_data->value) {
+			if (search_data->value_len != attribute->value_len)
+				continue;
+
+			if (memcmp(attribute->value, search_data->value,
+					search_data->value_len)) {
+				continue;
+			}
+		}

 		search_data->num_of_res++;
 		search_data->func(attribute, search_data->user_data);
--
2.14.0.rc1.383.gd1ce394fe2-goog

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux