diff options
Diffstat (limited to 'source/n/bluez')
-rwxr-xr-x | source/n/bluez/bluez.SlackBuild | 50 | ||||
-rw-r--r-- | source/n/bluez/doinst.sh | 1 | ||||
-rw-r--r-- | source/n/bluez/gatt_fix_crash.diff | 43 | ||||
-rw-r--r-- | source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff | 52 | ||||
-rw-r--r-- | source/n/bluez/slack-desc | 10 |
5 files changed, 143 insertions, 13 deletions
diff --git a/source/n/bluez/bluez.SlackBuild b/source/n/bluez/bluez.SlackBuild index 3dbd00f7e..8fc07365c 100755 --- a/source/n/bluez/bluez.SlackBuild +++ b/source/n/bluez/bluez.SlackBuild @@ -1,6 +1,6 @@ -#!/bin/sh +#!/bin/bash -# Copyright 2009, 2010, 2011, 2012, 2013, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# Copyright 2009, 2010, 2011, 2012, 2013, 2016, 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -20,9 +20,11 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +cd $(dirname $0) ; CWD=$(pwd) + PKGNAM=bluez -VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-3} NUMJOBS=${NUMJOBS:--j7} @@ -36,6 +38,14 @@ if [ -z "$ARCH" ]; then esac fi +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + if [ "$ARCH" = "i586" ]; then SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" @@ -50,7 +60,6 @@ else LIBDIRSUFFIX="" fi -CWD=$(pwd) TMP=${TMP:-/tmp} PKG=$TMP/package-$PKGNAM @@ -58,7 +67,7 @@ rm -rf $PKG mkdir -p $TMP $PKG cd $TMP rm -rf $PKGNAM-$VERSION -tar xvf $CWD/${PKGNAM}-${VERSION}.tar.xz || exit 1 +tar xvf $CWD/${PKGNAM}-${VERSION}.tar.?z || exit 1 cd $PKGNAM-$VERSION || exit 1 chown -R root:root . find . \ @@ -69,10 +78,27 @@ find . \ zcat $CWD/bluez-5.30-obexd_without_systemd-1.patch.gz | patch -p1 --verbose || exit 1 +# Fix bluetoothd crashes: +zcat $CWD/gatt_fix_crash.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/refresh_adv_manager_for_non-LE_devices.diff.gz | patch -p1 --verbose || exit 1 + autoreconf -vif sed -i -e 's|-lreadline|\0 -lncursesw|g' Makefile.{in,tools} +# We're adding --enable-deprecated due to this commit: +# +# commit b1eb2c4cd057624312e0412f6c4be000f7fc3617 +#Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> +#Date: Wed Jan 4 14:23:58 2017 +0200 +# +# build: Hide deprecated tools under --enable-deprecated +# +# This marks the following tools as deprecated as they are not longer +# maintained or have been replaced by other tools: +# +# hciattach hciconfig hcitool hcidump rfcomm sdptool ciptool gatttool + CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ LDFLAGS="-L/usr/lib$LIBDIRSUFFIX" \ @@ -85,11 +111,15 @@ LDFLAGS="-L/usr/lib$LIBDIRSUFFIX" \ --docdir=/usr/doc/${PKGNAM}-${VERSION} \ --enable-library \ --disable-systemd \ + --enable-deprecated \ --build=$ARCH-slackware-linux || exit 1 make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 +# Don't ship .la files: +rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la + # Use reset=1 for the btusb module, which supposedly fixes reconnect problems: mkdir -p $PKG/lib/modprobe.d cp -a $CWD/btusb.conf $PKG/lib/modprobe.d @@ -105,7 +135,6 @@ mkdir -p $PKG/etc/bluetooth $PKG/etc/default cat src/main.conf > $PKG/etc/bluetooth/main.conf.new cat profiles/input/input.conf > $PKG/etc/bluetooth/input.conf.new cat profiles/network/network.conf > $PKG/etc/bluetooth/network.conf.new -cat profiles/proximity/proximity.conf > $PKG/etc/bluetooth/proximity.conf.new cat $CWD/config/uart.conf > $PKG/etc/bluetooth/uart.conf.new cat $CWD/config/defaultconfig > $PKG/etc/default/bluetooth.new @@ -117,6 +146,13 @@ cat $CWD/config/rc.bluetooth > $PKG/etc/rc.d/rc.bluetooth.new # script is not executable: chmod 755 $PKG/etc/rc.d/rc.bluetooth.new +# If the deprecated utility gatttool was built, go ahead and install it: +if [ -x attrib/gatttool ]; then + cp attrib/gatttool $PKG/usr/bin + chown root:root $PKG/usr/bin/gatttool + chmod 755 $PKG/usr/bin/gatttool +fi + # Compress and if needed symlink the man pages: if [ -d $PKG/usr/man ]; then ( cd $PKG/usr/man diff --git a/source/n/bluez/doinst.sh b/source/n/bluez/doinst.sh index 7fc213834..796630fd2 100644 --- a/source/n/bluez/doinst.sh +++ b/source/n/bluez/doinst.sh @@ -21,7 +21,6 @@ config etc/rc.d/rc.bluetooth.new config etc/bluetooth/input.conf.new config etc/bluetooth/main.conf.new config etc/bluetooth/network.conf.new -config etc/bluetooth/proximity.conf.new config etc/bluetooth/uart.conf.new config etc/default/bluetooth.new diff --git a/source/n/bluez/gatt_fix_crash.diff b/source/n/bluez/gatt_fix_crash.diff new file mode 100644 index 000000000..d05785252 --- /dev/null +++ b/source/n/bluez/gatt_fix_crash.diff @@ -0,0 +1,43 @@ +From e10c204e1226e94a1eaaeaee076e7e2e5b13c504 Mon Sep 17 00:00:00 2001 +From: Szymon Janc <szymon.janc@codecoup.pl> +Date: Wed, 4 Apr 2018 09:28:56 +0200 +Subject: gatt: Fix crash with BR/EDR only adapter + +adapter->database can be NULL if controller is BR/EDR only or LE was +disabled. Make btd_gatt_database_restore_svc_chng_ccc accept NULL +pointer and silently ignore it similiar to rest of btd_gatt_database +API. + +Invalid read of size 8 + at 0x164DCB: btd_gatt_database_restore_svc_chng_ccc (src/bluez-git/src/bluetoothd) + by 0x17B70F: read_info_complete (src/bluez-git/src/bluetoothd) + by 0x1A7E58: request_complete (src/bluez-git/src/bluetoothd) + by 0x1A89AD: can_read_data (src/bluez-git/src/bluetoothd) + by 0x1B5752: watch_callback (src/bluez-git/src/bluetoothd) + by 0x4E852C5: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.5600.0) + by 0x4E856A0: ??? (in /usr/lib/libglib-2.0.so.0.5600.0) + by 0x4E859D1: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.5600.0) + by 0x125058: main (src/bluez-git/src/bluetoothd) + Address 0x40 is not stack'd, malloc'd or (recently) free'd +--- + src/gatt-database.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/gatt-database.c b/src/gatt-database.c +index 1cdc72e..0ac5b75 100644 +--- a/src/gatt-database.c ++++ b/src/gatt-database.c +@@ -3330,6 +3330,9 @@ void btd_gatt_database_restore_svc_chng_ccc(struct btd_gatt_database *database) + uint8_t value[4]; + uint16_t handle, ccc_handle; + ++ if (!database) ++ return; ++ + handle = gatt_db_attribute_get_handle(database->svc_chngd); + ccc_handle = gatt_db_attribute_get_handle(database->svc_chngd_ccc); + +-- +cgit v1.1 + + diff --git a/source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff b/source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff new file mode 100644 index 000000000..922d9d383 --- /dev/null +++ b/source/n/bluez/refresh_adv_manager_for_non-LE_devices.diff @@ -0,0 +1,52 @@ +From 2c3bba7b38be03834162e34069156f1fd49f0528 Mon Sep 17 00:00:00 2001 +From: "antoine.belvire@laposte.net" <antoine.belvire@laposte.net> +Date: Tue, 27 Mar 2018 20:30:26 +0200 +Subject: adapter: Don't refresh adv_manager for non-LE devices + +btd_adv_manager_refresh is called upon MGMT_SETTING_DISCOVERABLE setting change +but as only LE adapters have an adv_manager, this leads to segmentation fault +for non-LE devices: + +0 btd_adv_manager_refresh (manager=0x0) at src/advertising.c:1176 +1 0x0000556fe45fcb02 in settings_changed (settings=<optimized out>, + adapter=0x556fe53f7c70) at src/adapter.c:543 +2 new_settings_callback (index=<optimized out>, length=<optimized out>, + param=<optimized out>, user_data=0x556fe53f7c70) at src/adapter.c:573 +3 0x0000556fe462c278 in request_complete (mgmt=mgmt@entry=0x556fe53f20c0, + status=<optimized out>, opcode=opcode@entry=7, index=index@entry=0, + length=length@entry=4, param=0x556fe53eb5f9) at src/shared/mgmt.c:261 +4 0x0000556fe462cd9d in can_read_data (io=<optimized out>, + user_data=0x556fe53f20c0) at src/shared/mgmt.c:353 +5 0x0000556fe46396e3 in watch_callback (channel=<optimized out>, + cond=<optimized out>, user_data=<optimized out>) + at src/shared/io-glib.c:170 +6 0x00007fe351c980e5 in g_main_context_dispatch () + from /usr/lib64/libglib-2.0.so.0 +7 0x00007fe351c984b0 in ?? () from /usr/lib64/libglib-2.0.so.0 +8 0x00007fe351c987c2 in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0 +9 0x0000556fe45abc75 in main (argc=<optimized out>, argv=<optimized out>) + at src/main.c:770 + +This commit prevents the call to btd_adv_manager_refresh for non-LE devices. +--- + src/adapter.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/adapter.c b/src/adapter.c +index 6b9222b..daccfdc 100644 +--- a/src/adapter.c ++++ b/src/adapter.c +@@ -540,7 +540,8 @@ static void settings_changed(struct btd_adapter *adapter, uint32_t settings) + g_dbus_emit_property_changed(dbus_conn, adapter->path, + ADAPTER_INTERFACE, "Discoverable"); + store_adapter_info(adapter); +- btd_adv_manager_refresh(adapter->adv_manager); ++ if (adapter->supported_settings & MGMT_SETTING_LE) ++ btd_adv_manager_refresh(adapter->adv_manager); + } + + if (changed_mask & MGMT_SETTING_BONDABLE) { +-- +cgit v1.1 + + diff --git a/source/n/bluez/slack-desc b/source/n/bluez/slack-desc index 607fa4d96..701f77c52 100644 --- a/source/n/bluez/slack-desc +++ b/source/n/bluez/slack-desc @@ -1,18 +1,18 @@ # HOW TO EDIT THIS FILE: -# The "handy ruler" below makes it easier to edit a package description. Line +# The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' -# on the right side marks the last column you can put a character in. You must -# make exactly 11 lines for the formatting to be correct. It's also +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also # customary to leave one space after the ':'. |-----handy-ruler------------------------------------------------------| bluez: bluez (Bluetooth libraries and utilities) bluez: bluez: Bluez is the Bluetooth stack for Linux, allowing Bluetooth adaptors -bluez: and devices to be used with Linux. This package contains the Bluez +bluez: and devices to be used with Linux. This package contains the Bluez bluez: libraries, utilities, and other support files. bluez: -bluez: For more info, visit: http://www.bluez.org +bluez: For more info, visit: http://www.bluez.org bluez: bluez: bluez: |