Adds caller check to getAllPackages()
This change enforces that only system, root or shell may call
getAllPackages(), a hidden API that shares all package names regardless
of user, instant app or package visibility rules.
Bug: 174661955
Merged-In: I77460ae19a4d41151577646441f11e2eddbb741a
(cherry picked from commit cca5bf9282)
Change-Id: I630cfd7c3be9bf6f2a6b8e132f6b8dda6b7fa274
This commit is contained in:
@@ -5793,6 +5793,11 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
@Override
|
||||
public List<String> getAllPackages() {
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
// enforceSystemOrRootOrShell:
|
||||
if (callingUid != Process.SYSTEM_UID && callingUid != Process.ROOT_UID
|
||||
&& callingUid != Process.SHELL_UID) {
|
||||
throw new SecurityException("getAllPackages is limited to privileged callers");
|
||||
}
|
||||
final int callingUserId = UserHandle.getUserId(callingUid);
|
||||
synchronized (mPackages) {
|
||||
if (canViewInstantApps(callingUid, callingUserId)) {
|
||||
|
||||
Reference in New Issue
Block a user