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

Commit 5b05f77a authored by Eugene Susla's avatar Eugene Susla
Browse files

Prevent race condition when iterating over bound services

Fixes: 71770764
Test: cts
Change-Id: Ifb7457a6b9a88b466bf39a647b92531de6c3c70e
parent dd312aba
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1362,14 +1362,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
    private int computeRelevantEventTypes(UserState userState, Client client) {
        int relevantEventTypes = 0;

        int numBoundServices = userState.mBoundServices.size();
        for (int i = 0; i < numBoundServices; i++) {
            AccessibilityServiceConnection service =
                    userState.mBoundServices.get(i);
        // Use iterator for thread-safety
        for (AccessibilityServiceConnection service : userState.mBoundServices) {
            relevantEventTypes |= isClientInPackageWhitelist(service.getServiceInfo(), client)
                    ? service.getRelevantEventTypes()
                    : 0;
        }

        relevantEventTypes |= isClientInPackageWhitelist(
                mUiAutomationManager.getServiceInfo(), client)
                ? mUiAutomationManager.getRelevantEventTypes()