bluez: update to 5.60

In some circumstances, the user must delete /var/lib/bluetooth if 5.59
created cache files affected by bluez issue #157 [1]. We chose not to
automate this procedure, since it would also delete user configurations.
Instead, we will keep an INSTALL.msg until the next version bump.

[1] https://github.com/bluez/bluez/issues/157
This commit is contained in:
Evan Gates 2021-07-12 16:38:56 -07:00 committed by Érico Nogueira Rolim
parent 836eedd6ee
commit 3b00be1b5d
3 changed files with 7 additions and 85 deletions

View file

@ -0,0 +1,5 @@
WARNING: if bluez 5.59 had audio issues for you, removing the
/var/lib/bluetooth directory might be necessary to completely restore
functionality.
For more information, see https://github.com/bluez/bluez/issues/157

View file

@ -1,83 +0,0 @@
From 382646b490c1c336dd32f9186293616ceb4d808b Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Mon, 3 May 2021 14:45:00 +0200
Subject: [PATCH 1/2] rfkill: Fix reading from rfkill socket
The kernel will always send exactly one event, but the size of the
passed struct will depend on the length of the submitted read() and the
kernel version. i.e. the interface can be extended and we need to expect
for a read to be longer than expected if we ask for it.
Fix this by only requesting the needed length and explicitly check the
length against the V1 version of the structure to make the code a bit
more future proof in case the internal copy of the struct is updated to
contain new fields.
---
src/rfkill.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/src/rfkill.c b/src/rfkill.c
index ec9fcdfdd..2099c5ac5 100644
--- a/src/rfkill.c
+++ b/src/rfkill.c
@@ -53,12 +53,12 @@ struct rfkill_event {
uint8_t soft;
uint8_t hard;
};
+#define RFKILL_EVENT_SIZE_V1 8
static gboolean rfkill_event(GIOChannel *chan,
GIOCondition cond, gpointer data)
{
- unsigned char buf[32];
- struct rfkill_event *event = (void *) buf;
+ struct rfkill_event event = { 0 };
struct btd_adapter *adapter;
char sysname[PATH_MAX];
ssize_t len;
@@ -69,34 +69,32 @@ static gboolean rfkill_event(GIOChannel *chan,
fd = g_io_channel_unix_get_fd(chan);
- memset(buf, 0, sizeof(buf));
-
- len = read(fd, buf, sizeof(buf));
+ len = read(fd, &event, sizeof(event));
if (len < 0) {
if (errno == EAGAIN)
return TRUE;
return FALSE;
}
- if (len != sizeof(struct rfkill_event))
+ if (len < RFKILL_EVENT_SIZE_V1)
return TRUE;
DBG("RFKILL event idx %u type %u op %u soft %u hard %u",
- event->idx, event->type, event->op,
- event->soft, event->hard);
+ event.idx, event.type, event.op,
+ event.soft, event.hard);
- if (event->soft || event->hard)
+ if (event.soft || event.hard)
return TRUE;
- if (event->op != RFKILL_OP_CHANGE)
+ if (event.op != RFKILL_OP_CHANGE)
return TRUE;
- if (event->type != RFKILL_TYPE_BLUETOOTH &&
- event->type != RFKILL_TYPE_ALL)
+ if (event.type != RFKILL_TYPE_BLUETOOTH &&
+ event.type != RFKILL_TYPE_ALL)
return TRUE;
snprintf(sysname, sizeof(sysname) - 1,
- "/sys/class/rfkill/rfkill%u/name", event->idx);
+ "/sys/class/rfkill/rfkill%u/name", event.idx);
fd = open(sysname, O_RDONLY);
if (fd < 0)
--
2.31.1

View file

@ -1,6 +1,6 @@
# Template file for 'bluez'
pkgname=bluez
version=5.59
version=5.60
revision=1
build_style=gnu-configure
configure_args="--with-udevdir=/usr/lib/udev --disable-systemd
@ -15,7 +15,7 @@ maintainer="Érico Nogueira <ericonr@disroot.org>"
license="GPL-2.0-or-later, LGPL-2.1-or-later"
homepage="http://www.bluez.org/"
distfiles="${KERNEL_SITE}/bluetooth/$pkgname-$version.tar.xz"
checksum=046b95b386d0bfb2a16311fe799d517ee7735045512d89902c4ed701db477316
checksum=710999580d01ee59ec585e5e7c07fd94eddedc001aa26fe7464c546f9d945304
conf_files="/etc/bluetooth/main.conf"
system_groups="bluetooth"