Diff between 698ef6bbd9324dbd044903ed0f79020e31d70527 and 41a5413023fa85bc711d461eb736a0624542df2d

Changed Files

File Additions Deletions Status
src/gatt-database.c +6 -2 modified
src/shared/gatt-db.c +8 -0 modified
src/shared/gatt-db.h +1 -0 modified

Full Patch

diff --git a/src/gatt-database.c b/src/gatt-database.c
index 8cbe09b..95ba398 100644
--- a/src/gatt-database.c
+++ b/src/gatt-database.c
@@ -1211,10 +1211,14 @@ static void populate_gatt_service(struct btd_gatt_database *database)
 				cli_feat_read_cb, cli_feat_write_cb,
 				database);
 
-	bt_uuid16_create(&uuid, GATT_CHARAC_DB_HASH);
-	database->db_hash = gatt_db_service_add_characteristic(service,
+
+	/* Only expose database hash chrc if supported */
+	if (gatt_db_hash_support(database->db)) {
+		bt_uuid16_create(&uuid, GATT_CHARAC_DB_HASH);
+		database->db_hash = gatt_db_service_add_characteristic(service,
 				&uuid, BT_ATT_PERM_READ, BT_GATT_CHRC_PROP_READ,
 				db_hash_read_cb, NULL, database);
+	}
 
 	/* Only enable EATT if there is a socket listening */
 	if (database->eatt_io) {
diff --git a/src/shared/gatt-db.c b/src/shared/gatt-db.c
index b44f7b5..5eccab3 100644
--- a/src/shared/gatt-db.c
+++ b/src/shared/gatt-db.c
@@ -597,6 +597,14 @@ uint8_t *gatt_db_get_hash(struct gatt_db *db)
 	return db->hash;
 }
 
+bool gatt_db_hash_support(struct gatt_db *db)
+{
+	if (!db || !db->crypto)
+		return false;
+
+	return true;
+}
+
 static struct gatt_db_service *find_insert_loc(struct gatt_db *db,
 						uint16_t start, uint16_t end,
 						struct gatt_db_service **after)
diff --git a/src/shared/gatt-db.h b/src/shared/gatt-db.h
index 08f0374..a0fd66c 100644
--- a/src/shared/gatt-db.h
+++ b/src/shared/gatt-db.h
@@ -41,6 +41,7 @@ bool gatt_db_remove_service(struct gatt_db *db,
 bool gatt_db_clear(struct gatt_db *db);
 bool gatt_db_clear_range(struct gatt_db *db, uint16_t start_handle,
 							uint16_t end_handle);
+bool gatt_db_hash_support(struct gatt_db *db);
 uint8_t *gatt_db_get_hash(struct gatt_db *db);
 
 struct gatt_db_attribute *gatt_db_insert_service(struct gatt_db *db,