From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> 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.17.2