bluez: update to 5.59.
Patch came from Arch and can also be found in [1]. [1] https://www.spinics.net/lists/linux-bluetooth/msg91322.html
This commit is contained in:
parent
a351cdf88d
commit
8f00a4e79c
@ -0,0 +1,83 @@
|
||||
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
|
@ -1,13 +1,13 @@
|
||||
# Template file for 'bluez'
|
||||
pkgname=bluez
|
||||
version=5.58
|
||||
revision=2
|
||||
version=5.59
|
||||
revision=1
|
||||
build_style=gnu-configure
|
||||
configure_args="--with-udevdir=/usr/lib/udev --disable-systemd
|
||||
--enable-sixaxis --enable-threads --enable-library --enable-deprecated
|
||||
--enable-external-ell $(vopt_enable mesh) $(vopt_enable nfc)
|
||||
$(vopt_enable experimental)"
|
||||
hostmakedepends="automake flex libtool pkg-config"
|
||||
hostmakedepends="automake flex libtool pkg-config python3-docutils"
|
||||
makedepends="cups-devel eudev-libudev-devel libglib-devel libical-devel
|
||||
readline-devel ell-devel $(vopt_if mesh json-c-devel)"
|
||||
short_desc="Bluetooth tools and daemons"
|
||||
@ -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=c8065e75a5eb67236849ef68a354b1700540305a8c88ef0a0fd6288f19daf1f1
|
||||
checksum=046b95b386d0bfb2a16311fe799d517ee7735045512d89902c4ed701db477316
|
||||
conf_files="/etc/bluetooth/main.conf"
|
||||
system_groups="bluetooth"
|
||||
patch_args="-Np1"
|
||||
|
Loading…
x
Reference in New Issue
Block a user