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

Unverified Commit 6d536347 authored by Kevin F. Haggerty's avatar Kevin F. Haggerty
Browse files

Merge tag 'android-security-10.0.0_r66' into staging/lineage-17.1_merge_android-security-10.0.0_r66

Android Security 10.0.0 Release 66 (8287684)

* tag 'android-security-10.0.0_r66':
  Handle null bindings returned from ConnectionService.

Change-Id: Ia2490ff7b4f6d4d57c36ef41070736f1c5f1621d
parents 20ee60c2 b419bebc
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -149,7 +149,6 @@ public abstract class ServiceBinder {
                    Log.i(this, "Service bound %s", componentName);

                    Log.addEvent(mCall, LogUtils.Events.CS_BOUND, componentName);
                    mCall = null;

                    // Unbind request was queued so unbind immediately.
                    if (mIsBindingAborted) {
@@ -191,6 +190,30 @@ public abstract class ServiceBinder {
                Log.endSession();
            }
        }

        /**
         * Handles the case where the {@link ConnectionService} we bound to returned a null binding.
         * We want to unbind from the service and cleanup and call resources at this time.
         * @param componentName The component of the {@link ConnectionService}.
         */
        @Override
        public void onNullBinding(ComponentName componentName) {
            try {
                Log.startSession("SBC.oNB");
                synchronized (mLock) {
                    Log.w(this, "Null binding %s", componentName);
                    Log.addEvent(mCall, "NULL_BINDING", componentName);
                    String componentStr = componentName == null ? "null" : componentName.toString();
                    android.util.EventLog.writeEvent(0x534e4554, "211114016", -1, componentStr);
                    logServiceDisconnected("onNullBinding");
                    mContext.unbindService(this);
                    clearAbort();
                    handleFailedConnection();
                }
            } finally {
                Log.endSession();
            }
        }
    }

    private void handleDisconnect() {