Check that app ID matches system uid in LocationDisabledAppOpsTest
Apps which share the system UID, will still have a unique user section
on secondary users. Ensure we compare their app ID to the system app id,
not the cross-user UID to the (user 0 only) system uid.
Fixes: 235018052
Test: atest LocationDisabledAppOpsTest --user-type secondary_user
Change-Id: I41ccb40de69d94fc812447dcfb6d5b9d58b88a4f
diff --git a/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java b/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java
index c406052..48d5946 100644
--- a/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java
+++ b/tests/location/location_none/src/android/location/cts/none/LocationDisabledAppOpsTest.java
@@ -86,14 +86,17 @@
List<String> bypassedCheckOps = new ArrayList<>();
for (PackageInfo pi : pkgs) {
ApplicationInfo ai = pi.applicationInfo;
- if (ai.uid != Process.SYSTEM_UID) {
+ int appId = UserHandle.getAppId(ai.uid);
+ if (appId != Process.SYSTEM_UID) {
final int[] mode = {MODE_ALLOWED};
+ final boolean[] isProvider = {false};
runWithShellPermissionIdentity(() -> {
mode[0] = mAom.noteOpNoThrow(
OPSTR_FINE_LOCATION, ai.uid, ai.packageName);
+ isProvider[0] = mLm.isProviderPackage(null, pi.packageName, null);
});
if (mode[0] == MODE_ALLOWED && !ignoreList.containsAll(pi.packageName)
- && !mLm.isProviderPackage(null, pi.packageName, null)) {
+ && !isProvider[0]) {
bypassedNoteOps.add(pi.packageName);
}
@@ -104,10 +107,9 @@
.checkOpNoThrow(OPSTR_FINE_LOCATION, ai.uid, ai.packageName);
});
if (mode[0] == MODE_ALLOWED && !ignoreList.includes(pi.packageName)
- && !mLm.isProviderPackage(null, pi.packageName, null)) {
+ && !isProvider[0]) {
bypassedCheckOps.add(pi.packageName);
}
-
}
}
diff --git a/tests/tests/security/src/android/security/cts/LocationDisabledAppOpsTest.java b/tests/tests/security/src/android/security/cts/LocationDisabledAppOpsTest.java
index c6b7e35..487c3d9 100644
--- a/tests/tests/security/src/android/security/cts/LocationDisabledAppOpsTest.java
+++ b/tests/tests/security/src/android/security/cts/LocationDisabledAppOpsTest.java
@@ -86,7 +86,8 @@
List<String> bypassedCheckOps = new ArrayList<>();
for (PackageInfo pi : pkgs) {
ApplicationInfo ai = pi.applicationInfo;
- if (ai.uid != Process.SYSTEM_UID) {
+ int appId = UserHandle.getAppId(ai.uid);
+ if (appId != Process.SYSTEM_UID) {
final int[] mode = {MODE_ALLOWED};
runWithShellPermissionIdentity(() -> {
mode[0] = mAom.noteOpNoThrow(