summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java12
2 files changed, 20 insertions, 0 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
index c637045589e7..bc3ffab5ccb6 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
@@ -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)
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
index edacc165016f..9b56303244c0 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
@@ -573,6 +573,18 @@ public class AccessibilitySecurityPolicyTest {
}
@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(
AccessibilityServiceInfo.class);