From b01440aba1918192fc5fa8f179ab665e6c9ca239 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 6 Mar 2019 14:39:41 +0200 Subject: [PATCH] adapter: Fix length calculation of filter UUIDs on big endian The management interface expect all values to be in little endian thus the length of uuids needs to be converted on big endian. --- src/adapter.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index b8a6bb6e2..160a6ca52 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -1602,10 +1602,12 @@ static gboolean start_discovery_timeout(gpointer user_data) sd_cp = adapter->current_discovery_filter; DBG("sending MGMT_OP_START_SERVICE_DISCOVERY %d, %d, %d", - sd_cp->rssi, sd_cp->type, sd_cp->uuid_count); + sd_cp->rssi, sd_cp->type, + btohs(sd_cp->uuid_count)); mgmt_send(adapter->mgmt, MGMT_OP_START_SERVICE_DISCOVERY, - adapter->dev_id, sizeof(*sd_cp) + sd_cp->uuid_count * 16, + adapter->dev_id, sizeof(*sd_cp) + + btohs(sd_cp->uuid_count) * 16, sd_cp, start_discovery_complete, adapter, NULL); return FALSE; @@ -2076,7 +2078,7 @@ static int discovery_filter_to_mgmt_cp(struct btd_adapter *adapter, cp->type = discovery_type; cp->rssi = rssi; - cp->uuid_count = uuid_count; + cp->uuid_count = htobs(uuid_count); populate_mgmt_filter_uuids(cp->uuids, uuids); g_slist_free(uuids); -- 2.47.3