Loading services/core/java/com/android/server/pm/PackageManagerService.java +78 −30 Original line number Original line Diff line number Diff line Loading @@ -2153,6 +2153,10 @@ public class PackageManagerService extends IPackageManager.Stub void enforceCrossUserPermission(int callingUid, @UserIdInt int userId, void enforceCrossUserPermission(int callingUid, @UserIdInt int userId, boolean requireFullPermission, boolean checkShell, boolean requireFullPermission, boolean checkShell, boolean requirePermissionWhenSameUser, String message); boolean requirePermissionWhenSameUser, String message); SigningDetails getSigningDetails(@NonNull String packageName); SigningDetails getSigningDetails(int uid); boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId); boolean filterAppAccess(String packageName, int callingUid, int userId); } } /** /** Loading Loading @@ -4578,6 +4582,40 @@ public class PackageManagerService extends IPackageManager.Stub throw new SecurityException(errorMessage); throw new SecurityException(errorMessage); } } public SigningDetails getSigningDetails(@NonNull String packageName) { AndroidPackage p = mPackages.get(packageName); if (p == null) { return null; } return p.getSigningDetails(); } public SigningDetails getSigningDetails(int uid) { final int appId = UserHandle.getAppId(uid); final Object obj = mSettings.getSettingLPr(appId); if (obj != null) { if (obj instanceof SharedUserSetting) { return ((SharedUserSetting) obj).signatures.mSigningDetails; } else if (obj instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) obj; return ps.signatures.mSigningDetails; } } return SigningDetails.UNKNOWN; } public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { PackageSetting ps = getPackageSetting(pkg.getPackageName()); return shouldFilterApplicationLocked(ps, callingUid, userId); } public boolean filterAppAccess(String packageName, int callingUid, int userId) { PackageSetting ps = getPackageSetting(packageName); return shouldFilterApplicationLocked(ps, callingUid, userId); } } } /** /** Loading Loading @@ -4728,6 +4766,26 @@ public class PackageManagerService extends IPackageManager.Stub return super.getPackageUidInternal(packageName, flags, userId, callingUid); return super.getPackageUidInternal(packageName, flags, userId, callingUid); } } } } public SigningDetails getSigningDetails(@NonNull String packageName) { synchronized (mLock) { return super.getSigningDetails(packageName); } } public SigningDetails getSigningDetails(int uid) { synchronized (mLock) { return super.getSigningDetails(uid); } } public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { synchronized (mLock) { return super.filterAppAccess(pkg, callingUid, userId); } } public boolean filterAppAccess(String packageName, int callingUid, int userId) { synchronized (mLock) { return super.filterAppAccess(packageName, callingUid, userId); } } } } Loading Loading @@ -26560,6 +26618,22 @@ public class PackageManagerService extends IPackageManager.Stub return snapshotComputer().getPackage(uid); return snapshotComputer().getPackage(uid); } } private SigningDetails getSigningDetails(@NonNull String packageName) { return snapshotComputer().getSigningDetails(packageName); } private SigningDetails getSigningDetails(int uid) { return snapshotComputer().getSigningDetails(uid); } private boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { return snapshotComputer().filterAppAccess(pkg, callingUid, userId); } private boolean filterAppAccess(String packageName, int callingUid, int userId) { return snapshotComputer().filterAppAccess(packageName, callingUid, userId); } private class PackageManagerInternalImpl extends PackageManagerInternal { private class PackageManagerInternalImpl extends PackageManagerInternal { @Override @Override public List<ApplicationInfo> getInstalledApplications(int flags, int userId, public List<ApplicationInfo> getInstalledApplications(int flags, int userId, Loading Loading @@ -26615,29 +26689,11 @@ public class PackageManagerService extends IPackageManager.Stub } } private SigningDetails getSigningDetails(@NonNull String packageName) { private SigningDetails getSigningDetails(@NonNull String packageName) { synchronized (mLock) { return PackageManagerService.this.getSigningDetails(packageName); AndroidPackage p = mPackages.get(packageName); if (p == null) { return null; } return p.getSigningDetails(); } } } private SigningDetails getSigningDetails(int uid) { private SigningDetails getSigningDetails(int uid) { synchronized (mLock) { return PackageManagerService.this.getSigningDetails(uid); final int appId = UserHandle.getAppId(uid); final Object obj = mSettings.getSettingLPr(appId); if (obj != null) { if (obj instanceof SharedUserSetting) { return ((SharedUserSetting) obj).signatures.mSigningDetails; } else if (obj instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) obj; return ps.signatures.mSigningDetails; } } return SigningDetails.UNKNOWN; } } } @Override @Override Loading @@ -26652,20 +26708,12 @@ public class PackageManagerService extends IPackageManager.Stub @Override @Override public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { synchronized (mLock) { return PackageManagerService.this.filterAppAccess(pkg, callingUid, userId); PackageSetting ps = getPackageSetting(pkg.getPackageName()); return PackageManagerService.this.shouldFilterApplicationLocked(ps, callingUid, userId); } } } @Override @Override public boolean filterAppAccess(String packageName, int callingUid, int userId) { public boolean filterAppAccess(String packageName, int callingUid, int userId) { synchronized (mLock) { return PackageManagerService.this.filterAppAccess(packageName, callingUid, userId); PackageSetting ps = getPackageSetting(packageName); return PackageManagerService.this.shouldFilterApplicationLocked(ps, callingUid, userId); } } } @Override @Override Loading
services/core/java/com/android/server/pm/PackageManagerService.java +78 −30 Original line number Original line Diff line number Diff line Loading @@ -2153,6 +2153,10 @@ public class PackageManagerService extends IPackageManager.Stub void enforceCrossUserPermission(int callingUid, @UserIdInt int userId, void enforceCrossUserPermission(int callingUid, @UserIdInt int userId, boolean requireFullPermission, boolean checkShell, boolean requireFullPermission, boolean checkShell, boolean requirePermissionWhenSameUser, String message); boolean requirePermissionWhenSameUser, String message); SigningDetails getSigningDetails(@NonNull String packageName); SigningDetails getSigningDetails(int uid); boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId); boolean filterAppAccess(String packageName, int callingUid, int userId); } } /** /** Loading Loading @@ -4578,6 +4582,40 @@ public class PackageManagerService extends IPackageManager.Stub throw new SecurityException(errorMessage); throw new SecurityException(errorMessage); } } public SigningDetails getSigningDetails(@NonNull String packageName) { AndroidPackage p = mPackages.get(packageName); if (p == null) { return null; } return p.getSigningDetails(); } public SigningDetails getSigningDetails(int uid) { final int appId = UserHandle.getAppId(uid); final Object obj = mSettings.getSettingLPr(appId); if (obj != null) { if (obj instanceof SharedUserSetting) { return ((SharedUserSetting) obj).signatures.mSigningDetails; } else if (obj instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) obj; return ps.signatures.mSigningDetails; } } return SigningDetails.UNKNOWN; } public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { PackageSetting ps = getPackageSetting(pkg.getPackageName()); return shouldFilterApplicationLocked(ps, callingUid, userId); } public boolean filterAppAccess(String packageName, int callingUid, int userId) { PackageSetting ps = getPackageSetting(packageName); return shouldFilterApplicationLocked(ps, callingUid, userId); } } } /** /** Loading Loading @@ -4728,6 +4766,26 @@ public class PackageManagerService extends IPackageManager.Stub return super.getPackageUidInternal(packageName, flags, userId, callingUid); return super.getPackageUidInternal(packageName, flags, userId, callingUid); } } } } public SigningDetails getSigningDetails(@NonNull String packageName) { synchronized (mLock) { return super.getSigningDetails(packageName); } } public SigningDetails getSigningDetails(int uid) { synchronized (mLock) { return super.getSigningDetails(uid); } } public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { synchronized (mLock) { return super.filterAppAccess(pkg, callingUid, userId); } } public boolean filterAppAccess(String packageName, int callingUid, int userId) { synchronized (mLock) { return super.filterAppAccess(packageName, callingUid, userId); } } } } Loading Loading @@ -26560,6 +26618,22 @@ public class PackageManagerService extends IPackageManager.Stub return snapshotComputer().getPackage(uid); return snapshotComputer().getPackage(uid); } } private SigningDetails getSigningDetails(@NonNull String packageName) { return snapshotComputer().getSigningDetails(packageName); } private SigningDetails getSigningDetails(int uid) { return snapshotComputer().getSigningDetails(uid); } private boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { return snapshotComputer().filterAppAccess(pkg, callingUid, userId); } private boolean filterAppAccess(String packageName, int callingUid, int userId) { return snapshotComputer().filterAppAccess(packageName, callingUid, userId); } private class PackageManagerInternalImpl extends PackageManagerInternal { private class PackageManagerInternalImpl extends PackageManagerInternal { @Override @Override public List<ApplicationInfo> getInstalledApplications(int flags, int userId, public List<ApplicationInfo> getInstalledApplications(int flags, int userId, Loading Loading @@ -26615,29 +26689,11 @@ public class PackageManagerService extends IPackageManager.Stub } } private SigningDetails getSigningDetails(@NonNull String packageName) { private SigningDetails getSigningDetails(@NonNull String packageName) { synchronized (mLock) { return PackageManagerService.this.getSigningDetails(packageName); AndroidPackage p = mPackages.get(packageName); if (p == null) { return null; } return p.getSigningDetails(); } } } private SigningDetails getSigningDetails(int uid) { private SigningDetails getSigningDetails(int uid) { synchronized (mLock) { return PackageManagerService.this.getSigningDetails(uid); final int appId = UserHandle.getAppId(uid); final Object obj = mSettings.getSettingLPr(appId); if (obj != null) { if (obj instanceof SharedUserSetting) { return ((SharedUserSetting) obj).signatures.mSigningDetails; } else if (obj instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) obj; return ps.signatures.mSigningDetails; } } return SigningDetails.UNKNOWN; } } } @Override @Override Loading @@ -26652,20 +26708,12 @@ public class PackageManagerService extends IPackageManager.Stub @Override @Override public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { public boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { synchronized (mLock) { return PackageManagerService.this.filterAppAccess(pkg, callingUid, userId); PackageSetting ps = getPackageSetting(pkg.getPackageName()); return PackageManagerService.this.shouldFilterApplicationLocked(ps, callingUid, userId); } } } @Override @Override public boolean filterAppAccess(String packageName, int callingUid, int userId) { public boolean filterAppAccess(String packageName, int callingUid, int userId) { synchronized (mLock) { return PackageManagerService.this.filterAppAccess(packageName, callingUid, userId); PackageSetting ps = getPackageSetting(packageName); return PackageManagerService.this.shouldFilterApplicationLocked(ps, callingUid, userId); } } } @Override @Override