summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2022-03-31 17:36:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-03-31 17:36:47 +0000
commit9172a68c1ace904eea592f08b00b1a124505fdae (patch)
tree32960b65fbec0dd15676d20c10d492b4ddfe0096
parent16ba50d5f56c75551cdad711005005c05c804631 (diff)
parent6f4f7061509a32c48944d42fbaaffed26e7aca90 (diff)
Merge "Don't allow an external service to be an A11y service" into tm-dev
-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);