Package: bluez
Version: 5.43-2+deb9u1
Followup-For: Bug #923270

I send 2 patches first try to fix ambigous compatation and second patches fix
incorrect senders on my case from 4 senders remain 3 on dbus



-- System Information:
Debian Release: 9.8
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.0.0-rc6+ (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages bluez depends on:
ii  dbus                 1.10.26-0+deb9u1
ii  init-system-helpers  1.48
ii  kmod                 23-2
ii  libc6                2.24-11+deb9u4
ii  libdbus-1-3          1.10.26-0+deb9u1
ii  libglib2.0-0         2.50.3-2
ii  libreadline7         7.0-3
ii  libudev1             232-25+deb9u8
ii  lsb-base             9.20161125
ii  udev                 232-25+deb9u8

bluez recommends no packages.

Versions of packages bluez suggests:
ii  pulseaudio-module-bluetooth  10.0-1+deb9u1

-- no debconf information
Author: Corcodel Marian <[email protected]>

Last-Update: 2019-03-05

--- bluez-5.43.orig/src/device.c
+++ bluez-5.43/src/device.c
@@ -1749,10 +1749,7 @@ static uint8_t select_conn_bearer(struct
        time_t bredr_last = NVAL_TIME, le_last = NVAL_TIME;
        time_t current = time(NULL);
 
-       /* Prefer bonded bearer in case only one is bonded */
-       if (dev->bredr_state.bonded && !dev->le_state.bonded )
-               return BDADDR_BREDR;
-       else if (!dev->bredr_state.bonded && dev->le_state.bonded)
+       if (dev->le_state.bonded)
                return dev->bdaddr_type;
 
        /* If the address is random it can only be connected over LE */
@@ -2393,10 +2390,8 @@ static DBusMessage *pair_device(DBusConn
                return btd_error_in_progress(msg);
 
        if (device->bredr_state.bonded)
-               bdaddr_type = device->bdaddr_type;
-       else if (device->le_state.bonded)
                bdaddr_type = BDADDR_BREDR;
-       else
+       else if (device->le_state.bonded)
                bdaddr_type = select_conn_bearer(device);
 
        state = get_state(device, bdaddr_type);
Author: Corcodel Marian
Last-Update: 2019-03-08

--- bluez-5.43.orig/src/device.c
+++ bluez-5.43/src/device.c
@@ -2371,8 +2371,8 @@ static void bonding_request_free(struct
 static DBusMessage *pair_device(DBusConnection *conn, DBusMessage *msg,
                                                                void *data)
 {
-       struct btd_device *device = data;
-       struct btd_adapter *adapter = device->adapter;
+       struct btd_device *device;
+       struct btd_adapter *adapter;
        struct bearer_state *state;
        uint8_t bdaddr_type;
        const char *sender;
@@ -2381,10 +2381,11 @@ static DBusMessage *pair_device(DBusConn
        uint8_t io_cap;
        int err;
 
-       btd_device_set_temporary(device, false);
-
        if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_INVALID))
                return btd_error_invalid_args(msg);
+       device = data;
+       adapter = device->adapter;
+       btd_device_set_temporary(device, false);
 
        if (device->bonding)
                return btd_error_in_progress(msg);

Reply via email to