From patchwork Tue Aug 2 16:34:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 595124 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10D9BC00140 for ; Tue, 2 Aug 2022 16:34:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238063AbiHBQez (ORCPT ); Tue, 2 Aug 2022 12:34:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237994AbiHBQer (ORCPT ); Tue, 2 Aug 2022 12:34:47 -0400 Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23C234C616 for ; Tue, 2 Aug 2022 09:34:46 -0700 (PDT) Received: by mail-pf1-x436.google.com with SMTP id d20so6637403pfq.5 for ; Tue, 02 Aug 2022 09:34:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=4FoavsV5+LBuNx4URqkD9cdDNE333qQzT7m/+eZCdx8=; b=DmnIFUptnd/BR5ZWvqQ3K6y4c/Ny7sMxwT0JIBbe8kPmMa1OLSgbPBbqpvkKoPsSqS VvahHqXx6FoSvhuzvByIaGWrWYVL2WdTPzXHXzzq6foZ6DGWBErmLb9833qLgECpTBPz xd6NO3nseY9IDEfMt1kCnOvl6KBy2lh0ya3jlO00OpaJ44F5Nr5e7iycJ7Q2eMyiCQkr qeFv2vYWm3AqjV20Z6+dsdzWcZIZB5QzI3bVw1y5jpB8vpRGOSI1nu2jUbhvjTPBpjMO B/UfKZYheg8lxo6dHkMK4lPSDYnPX8HWlMg899s6dABdG9JC0YdenC6WNaNtkskVvHTr SPYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=4FoavsV5+LBuNx4URqkD9cdDNE333qQzT7m/+eZCdx8=; b=Um41SeEyyxd0QIT6YjWmhCPXY21zvieb0/5+aT8IhXUQo4ghWPZM3+f71Nrkjls7c6 sOrxM/8ifzMop/wTqelZnMtltgXD7snGdx5P+HoI1DaOaTu/2qKwIpiVg9APrKruqYpw +kDl2nef1qtM6YAj8jkj4SQsKgHVluq/8W1i2ULRFvmHFN91m+Vbryf0RPyEiEaMpEYI zFLrtVbzf7+B6kIBXZPoY3oVlYKzZGjOiUCZRQPbSzkBVTm7OWbkc1G3fwpUgTScb4Np mXkkNmfN5lZEr/vhffp/uWIfBstLpajiKHHAHf2fRZGsMqCS3S9nNw1IvcxPgaRPacrT gV4Q== X-Gm-Message-State: AJIora/qtuIRz4KNW5yd7SufOU0BJMOCLuBy/QDpQ9Ty6+OzYEwkNxyb vJtzrRc9g3+hvO6YaCnIniACWZA3l7deWA== X-Google-Smtp-Source: AGRyM1ugoErOpfsmxh4oJMnBlr9GhyYKNnMf6Zh3Rj3cYYlrQ/Pq7gZBbCH/E8IN+oF6fZq0H4m0YA== X-Received: by 2002:a63:170d:0:b0:415:f76d:45e1 with SMTP id x13-20020a63170d000000b00415f76d45e1mr17708130pgl.171.1659458084716; Tue, 02 Aug 2022 09:34:44 -0700 (PDT) Received: from lvondent-mobl4.. (c-71-56-157-77.hsd1.or.comcast.net. [71.56.157.77]) by smtp.gmail.com with ESMTPSA id y63-20020a62ce42000000b0052dd9dbe291sm2026149pfg.105.2022.08.02.09.34.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Aug 2022 09:34:42 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ 1/2] device: Add btd_ prefix to device_is_trusted Date: Tue, 2 Aug 2022 09:34:40 -0700 Message-Id: <20220802163441.2522333-1-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Luiz Augusto von Dentz This adds btd_ prefix to device_is_trusted so it can be used by plugins. --- src/adapter.c | 2 +- src/device.c | 8 ++++---- src/device.h | 2 +- src/gatt-database.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index b159d2135..10432b734 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -7334,7 +7334,7 @@ static gboolean process_auth_queue(gpointer user_data) goto next; } - if (device_is_trusted(device) == TRUE) { + if (btd_device_is_trusted(device) == TRUE) { auth->cb(NULL, auth->user_data); goto next; } diff --git a/src/device.c b/src/device.c index 775003796..60762ac35 100644 --- a/src/device.c +++ b/src/device.c @@ -257,7 +257,7 @@ struct btd_device { sdp_list_t *tmp_records; - gboolean trusted; + bool trusted; gboolean blocked; gboolean auto_connect; gboolean disable_auto_connect; @@ -826,7 +826,7 @@ bool device_is_bonded(struct btd_device *device, uint8_t bdaddr_type) return state->bonded; } -gboolean device_is_trusted(struct btd_device *device) +bool btd_device_is_trusted(struct btd_device *device) { return device->trusted; } @@ -1163,7 +1163,7 @@ static gboolean dev_property_get_trusted(const GDBusPropertyTable *property, DBusMessageIter *iter, void *data) { struct btd_device *device = data; - gboolean val = device_is_trusted(device); + gboolean val = btd_device_is_trusted(device); dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &val); @@ -6031,7 +6031,7 @@ void device_bonding_complete(struct btd_device *device, uint8_t bdaddr_type, * treated as a newly discovered device. */ if (!device_is_paired(device, bdaddr_type) && - !device_is_trusted(device)) + !btd_device_is_trusted(device)) btd_device_set_temporary(device, true); device_bonding_failed(device, status); diff --git a/src/device.h b/src/device.h index d7f886224..004d3a78b 100644 --- a/src/device.h +++ b/src/device.h @@ -88,7 +88,7 @@ gboolean device_is_temporary(struct btd_device *device); bool device_is_connectable(struct btd_device *device); bool device_is_paired(struct btd_device *device, uint8_t bdaddr_type); bool device_is_bonded(struct btd_device *device, uint8_t bdaddr_type); -gboolean device_is_trusted(struct btd_device *device); +bool btd_device_is_trusted(struct btd_device *device); void device_set_paired(struct btd_device *dev, uint8_t bdaddr_type); void device_set_unpaired(struct btd_device *dev, uint8_t bdaddr_type); void btd_device_set_temporary(struct btd_device *device, bool temporary); diff --git a/src/gatt-database.c b/src/gatt-database.c index cf651b5f5..db8432c6b 100644 --- a/src/gatt-database.c +++ b/src/gatt-database.c @@ -2989,7 +2989,7 @@ static void desc_write_cb(struct gatt_db_attribute *attrib, } if (opcode == BT_ATT_OP_PREP_WRITE_REQ) { - if (!device_is_trusted(device) && !desc->prep_authorized && + if (!btd_device_is_trusted(device) && !desc->prep_authorized && desc->req_prep_authorization) send_write(att, attrib, desc->proxy, desc->pending_writes, id, value, len, @@ -3120,7 +3120,7 @@ static void chrc_write_cb(struct gatt_db_attribute *attrib, queue = NULL; if (opcode == BT_ATT_OP_PREP_WRITE_REQ) { - if (!device_is_trusted(device) && !chrc->prep_authorized && + if (!btd_device_is_trusted(device) && !chrc->prep_authorized && chrc->req_prep_authorization) send_write(att, attrib, chrc->proxy, queue, id, value, len, offset, From patchwork Tue Aug 2 16:34:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 594928 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9C4F4C00140 for ; Tue, 2 Aug 2022 16:34:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238065AbiHBQe5 (ORCPT ); Tue, 2 Aug 2022 12:34:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43400 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237995AbiHBQet (ORCPT ); Tue, 2 Aug 2022 12:34:49 -0400 Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com [IPv6:2607:f8b0:4864:20::536]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98FBF4B0F8 for ; Tue, 2 Aug 2022 09:34:47 -0700 (PDT) Received: by mail-pg1-x536.google.com with SMTP id bh13so12787113pgb.4 for ; Tue, 02 Aug 2022 09:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=KAhRUIJv/KlerRNKOScgBfsKM4xAMhcrzOSBUbh4KQc=; b=aoIvW0OYhHfjlI7JcwQqnymRluDYHrEjpCywIicCCoGhHNpZEo1isALGcMBvvTO/Bi LjctAl0gkth3VlOAcIV8cktVmziIpQn+thNO75AFQGL/VbXv6oEncQGSB8wiGgmYAhYh M0I3FhYRx7hhlerQE30/oBpd3XQtMR2r5l9vlSut5hkAPvUFs/ziP/uU9eMCC+dj/KRs 2UP842Qwo0slnlGMdJSshI2LDLrD9FrpFKfzumOJg5TV1kHXWVmEh7BlLR1OxQ4/uhLi israA4d84gwfHafRy8T5UtMJiMHe800Bdl88pbSJ4OHRhJ/IYnvAmG/SoCc9CqalHI8a UO2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KAhRUIJv/KlerRNKOScgBfsKM4xAMhcrzOSBUbh4KQc=; b=nAYHY7/OBS8Qf9p+LC2XfvD3eYBP6J0Dan8If5WwgIK2Qmb/BLMWvFKNwF0OwlwI3n 9UT+FBByQYBnX87Z+txbYhgKamj/UeSN5Up9e4llKWxHUOJkWKf6h20cmv1I9MzMye0y BWxxddSSfLhaxJ1GmVY+/Y2hFyAD84zonk2mr8E36fAUJUV0eJyoAEzvaKDqCheZD4hs A8kbKyZ+tFp6x3oRqTNlgh3QbfWmCx53AftQrVJfgxw5WuLX+Go2Q3aAqMnJSFqug4V7 eNfs3XIaFPGtX1SNURYfWOkEsYfSFNvshZzwy+fvYvt7ZLHZccVzBiuLKthg3ypsx0Qv +JNw== X-Gm-Message-State: ACgBeo0inNSN9T8LNUyS81FezsRuxOEdax38lu5vlm/+aSLiZtiv2IgN eaBLrzxaxCakG6I9s5oK+PJyTwKWhVmw7w== X-Google-Smtp-Source: AA6agR4c4vuriVadpLH0OlHJpBHQl1lreKCEJfU/SBVgyxvR/SJ5pb4tEvtW+EV7LuncLTOJIwUduw== X-Received: by 2002:a63:2021:0:b0:41b:c2e5:f4ab with SMTP id g33-20020a632021000000b0041bc2e5f4abmr12908959pgg.496.1659458086328; Tue, 02 Aug 2022 09:34:46 -0700 (PDT) Received: from lvondent-mobl4.. (c-71-56-157-77.hsd1.or.comcast.net. [71.56.157.77]) by smtp.gmail.com with ESMTPSA id y63-20020a62ce42000000b0052dd9dbe291sm2026149pfg.105.2022.08.02.09.34.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Aug 2022 09:34:45 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ 2/2] sixaxis: Fix fliping device.trusted automatically Date: Tue, 2 Aug 2022 09:34:41 -0700 Message-Id: <20220802163441.2522333-2-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20220802163441.2522333-1-luiz.dentz@gmail.com> References: <20220802163441.2522333-1-luiz.dentz@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Luiz Augusto von Dentz device.trusted is a user preference which controls if the devices needs to be authorized or not so the plugin shall not overwrite it and instead just honor what user has set and skip authorizing if already trusted. Fixes: https://github.com/bluez/bluez/issues/372 --- plugins/sixaxis.c | 9 +++------ src/device.c | 6 ++++++ src/device.h | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/plugins/sixaxis.c b/plugins/sixaxis.c index 10cf15948..544ab399a 100644 --- a/plugins/sixaxis.c +++ b/plugins/sixaxis.c @@ -294,7 +294,6 @@ static void agent_auth_cb(DBusError *derr, void *user_data) } remove_device = false; - btd_device_set_trusted(closure->device, true); btd_device_set_temporary(closure->device, false); if (closure->type == CABLE_PAIRING_SIXAXIS) @@ -336,10 +335,9 @@ static bool setup_device(int fd, const char *sysfs_path, * connected eg. to charge up battery. */ device = btd_adapter_find_device(adapter, &device_bdaddr, BDADDR_BREDR); - if (device != NULL && - btd_device_is_connected(device) && - g_slist_find_custom(btd_device_get_uuids(device), HID_UUID, - (GCompareFunc)strcasecmp)) { + if (device && btd_device_has_uuid(device, HID_UUID) && + (btd_device_is_connected(device) || + btd_device_is_trusted(device))) { char device_addr[18]; ba2str(&device_bdaddr, device_addr); DBG("device %s already known, skipping", device_addr); @@ -352,7 +350,6 @@ static bool setup_device(int fd, const char *sysfs_path, btd_device_device_set_name(device, cp->name); btd_device_set_pnpid(device, cp->source, cp->vid, cp->pid, cp->version); - btd_device_set_trusted(device, false); btd_device_set_temporary(device, true); closure = g_new0(struct authentication_closure, 1); diff --git a/src/device.c b/src/device.c index 60762ac35..bc9942022 100644 --- a/src/device.c +++ b/src/device.c @@ -4509,6 +4509,12 @@ GSList *btd_device_get_uuids(struct btd_device *device) return device->uuids; } +bool btd_device_has_uuid(struct btd_device *device, const char *uuid) +{ + return g_slist_find_custom(device->uuids, uuid, + (GCompareFunc)strcasecmp); +} + struct probe_data { struct btd_device *dev; GSList *uuids; diff --git a/src/device.h b/src/device.h index 004d3a78b..cc474bd88 100644 --- a/src/device.h +++ b/src/device.h @@ -54,6 +54,7 @@ struct device_addr_type { int device_addr_type_cmp(gconstpointer a, gconstpointer b); GSList *btd_device_get_uuids(struct btd_device *device); +bool btd_device_has_uuid(struct btd_device *device, const char *uuid); void device_probe_profiles(struct btd_device *device, GSList *profiles); void btd_device_set_record(struct btd_device *device, const char *uuid,