Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b23d4458 authored by Nick Pelly's avatar Nick Pelly
Browse files

Fix authorization check for Audio Source.

Bluez sends the UUID of the local service being accessed in Agent.Authorize,
not the remote service. So check for Audio Source not Audio Sink.

In most cases this was not a problem because Bluez sends us AdvAudioDist UUID
(0x110D) for incoming A2DP connections, which we already check for. This is a
precautionary change.
parent d497d876
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -430,8 +430,10 @@ class BluetoothEventLoop {

        boolean authorized = false;
        UUID uuid = UUID.fromString(deviceUuid);
        // Bluez sends the UUID of the local service being accessed, _not_ the
        // remote service
        if (mBluetoothService.isEnabled() &&
                (BluetoothUuid.isAudioSink(uuid) || BluetoothUuid.isAvrcpTarget(uuid)
                (BluetoothUuid.isAudioSource(uuid) || BluetoothUuid.isAvrcpTarget(uuid)
                        || BluetoothUuid.isAdvAudioDist(uuid))) {
            BluetoothA2dp a2dp = new BluetoothA2dp(mContext);
            BluetoothDevice device = mAdapter.getRemoteDevice(address);
@@ -444,6 +446,7 @@ class BluetoothEventLoop {
        } else {
            Log.i(TAG, "Rejecting incoming " + deviceUuid + " connection from " + address);
        }
        log("onAgentAuthorize(" + objectPath + ", " + deviceUuid + ") = " + authorized);
        return authorized;
    }