summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorTodd Kennedy <toddke@google.com>2018-05-29 15:18:06 -0700
committerTodd Kennedy <toddke@google.com>2018-05-30 13:56:17 -0700
commitef9acb6ed97ececa4c8554adb693ec948a963db1 (patch)
tree88965c52e964c34056ba99735d7f2a66577c45fc /core/java/android
parente3348a25935099838a917cf4556c4dccc714e0ef (diff)
Ensure permission held for MATCH_KNOWN_PACKAGES
There's an escape clause that passes the cross user permissions if the caller UID is identical to the target user ID [eg. we're not operating across users]. However, the method getInstalledPackagesList() uses android.permission.INTERACT_ACROSS_USERS to filter the results and a calling UID check is not sufficient. Ensuure the permission is actually held, regardless of the calling UID or target user. Change-Id: Iebf88668766d387a15246d6eea6420610665105a Fixes: 80435086 Test: atest CtsAppSecurityHostTestCases:ApplicationVisibilityTest
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/content/pm/PackageManager.java2
1 files changed, 2 insertions, 0 deletions
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 63de8bf49f8b..3f9798b7d6c9 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -461,6 +461,7 @@ public abstract class PackageManager {
* package.
* @hide
*/
+ @TestApi
public static final int MATCH_KNOWN_PACKAGES = MATCH_UNINSTALLED_PACKAGES | MATCH_ANY_USER;
/**
@@ -3420,6 +3421,7 @@ public abstract class PackageManager {
* deleted with {@code DONT_DELETE_DATA} flag set).
* @hide
*/
+ @TestApi
@SystemApi
@RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
public abstract List<PackageInfo> getInstalledPackagesAsUser(@PackageInfoFlags int flags,