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

Commit c543de21 authored by Grzegorz Kołodziejczyk's avatar Grzegorz Kołodziejczyk
Browse files

BassClient: Pass current receiver state on first set code check

There is a null pointer dereference while parsing first receiver state
that requires broadcast code. Patch passes current receiver state if
there is first set code check performed.

Test: presubmit
Test: atest BluetoothInstrumentationTests
Test: atest BassClientStateMachineTest
Bug: 150670922
Bug: 229965085
Tag: #feature
Sponsor: jpawlowski@
Change-Id: I413cc4d138b3ab06aff95c15ebf3cef717fda2d7
Merged-In: I413cc4d138b3ab06aff95c15ebf3cef717fda2d7
(cherry picked from commit 4d53123d)
parent 2ef041a6
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -602,10 +602,17 @@ public class BassClientStateMachine extends StateMachine {
                && mSetBroadcastCodePending) {
            log("Update the Broadcast now");
            Message m = obtainMessage(BassClientStateMachine.SET_BCAST_CODE);

            /* Use cached receiver state if previousely didn't finished setting broadcast code or
             * use current receiver state if this is a first check and update
             */
            if (mSetBroadcastPINRcvState != null) {
                m.obj = mSetBroadcastPINRcvState;
            } else {
                m.obj = recvState;
            }

            sendMessage(m);
            mSetBroadcastCodePending = false;
            mSetBroadcastPINRcvState = null;
        }
    }

@@ -1579,6 +1586,8 @@ public class BassClientStateMachine extends StateMachine {
                            mPendingSourceId = (byte) recvState.getSourceId();
                            transitionTo(mConnectedProcessing);
                            sendMessageDelayed(GATT_TXN_TIMEOUT, BassConstants.GATT_TXN_TIMEOUT_MS);
                            mSetBroadcastCodePending = false;
                            mSetBroadcastPINRcvState = null;
                        }
                    }
                    break;