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

Commit 005aae38 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Don't allow an external service to be an A11y service" into tm-dev am: 9172a68c

parents d64b34f7 9172a68c
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -647,6 +647,14 @@ public class AccessibilitySecurityPolicy {
            return false;
        }

        if ((serviceInfo.flags & ServiceInfo.FLAG_EXTERNAL_SERVICE) != 0) {
            Slog.w(LOG_TAG, "Skipping accessibility service " + new ComponentName(
                    serviceInfo.packageName, serviceInfo.name).flattenToShortString()
                    + ": the service is the external one and doesn't allow to register as "
                    + "an accessibility service ");
            return false;
        }

        int servicePackageUid = serviceInfo.applicationInfo.uid;
        if (mAppOpsManager.noteOpNoThrow(AppOpsManager.OPSTR_BIND_ACCESSIBILITY_SERVICE,
                servicePackageUid, serviceInfo.packageName, null, null)
+12 −0
Original line number Diff line number Diff line
@@ -572,6 +572,18 @@ public class AccessibilitySecurityPolicyTest {
                serviceInfo.applicationInfo.uid, serviceInfo.packageName, null, null);
    }

    @Test
    public void canRegisterService_isExternalService_returnFalse() {
        final ServiceInfo serviceInfo = new ServiceInfo();
        serviceInfo.applicationInfo = new ApplicationInfo();
        serviceInfo.packageName = PACKAGE_NAME;
        serviceInfo.name = AccessibilitySecurityPolicyTest.class.getSimpleName();
        serviceInfo.permission = android.Manifest.permission.BIND_ACCESSIBILITY_SERVICE;
        serviceInfo.flags |= ServiceInfo.FLAG_EXTERNAL_SERVICE;

        assertFalse(mA11ySecurityPolicy.canRegisterService(serviceInfo));
    }

    @Test
    public void checkAccessibilityAccess_shouldCheckAppOps() {
        final AccessibilityServiceInfo mockServiceInfo = Mockito.mock(