Loading services/core/java/com/android/server/pm/PackageManagerService.java +21 −7 Original line number Original line Diff line number Diff line Loading @@ -4600,7 +4600,7 @@ public class PackageManagerService extends IPackageManager.Stub synchronized (mLock) { synchronized (mLock) { final AndroidPackage p = mPackages.get(packageName); final AndroidPackage p = mPackages.get(packageName); if (p != null && p.isMatch(flags)) { if (p != null && p.isMatch(flags)) { PackageSetting ps = getPackageSetting(p.getPackageName()); PackageSetting ps = getPackageSettingInternal(p.getPackageName(), callingUid); if (shouldFilterApplicationLocked(ps, callingUid, userId)) { if (shouldFilterApplicationLocked(ps, callingUid, userId)) { return -1; return -1; } } Loading Loading @@ -5924,7 +5924,10 @@ public class PackageManagerService extends IPackageManager.Stub */ */ @Override @Override public String[] getPackagesForUid(int uid) { public String[] getPackagesForUid(int uid) { final int callingUid = Binder.getCallingUid(); return getPackagesForUidInternal(uid, Binder.getCallingUid()); } private String[] getPackagesForUidInternal(int uid, int callingUid) { final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null; final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null; final int userId = UserHandle.getUserId(uid); final int userId = UserHandle.getUserId(uid); final int appId = UserHandle.getAppId(uid); final int appId = UserHandle.getAppId(uid); Loading Loading @@ -17380,6 +17383,13 @@ public class PackageManagerService extends IPackageManager.Stub @GuardedBy("mLock") @GuardedBy("mLock") private String resolveInternalPackageNameLPr(String packageName, long versionCode) { private String resolveInternalPackageNameLPr(String packageName, long versionCode) { final int callingUid = Binder.getCallingUid(); return resolveInternalPackageNameInternalLocked(packageName, versionCode, callingUid); } private String resolveInternalPackageNameInternalLocked( String packageName, long versionCode, int callingUid) { // Handle renamed packages // Handle renamed packages String normalizedPackageName = mSettings.getRenamedPackageLPr(packageName); String normalizedPackageName = mSettings.getRenamedPackageLPr(packageName); packageName = normalizedPackageName != null ? normalizedPackageName : packageName; packageName = normalizedPackageName != null ? normalizedPackageName : packageName; Loading @@ -17393,12 +17403,12 @@ public class PackageManagerService extends IPackageManager.Stub // Figure out which lib versions the caller can see // Figure out which lib versions the caller can see LongSparseLongArray versionsCallerCanSee = null; LongSparseLongArray versionsCallerCanSee = null; final int callingAppId = UserHandle.getAppId(Binder.getCallingUid()); final int callingAppId = UserHandle.getAppId(callingUid); if (callingAppId != Process.SYSTEM_UID && callingAppId != Process.SHELL_UID if (callingAppId != Process.SYSTEM_UID && callingAppId != Process.SHELL_UID && callingAppId != Process.ROOT_UID) { && callingAppId != Process.ROOT_UID) { versionsCallerCanSee = new LongSparseLongArray(); versionsCallerCanSee = new LongSparseLongArray(); String libName = versionedLib.valueAt(0).getName(); String libName = versionedLib.valueAt(0).getName(); String[] uidPackages = getPackagesForUid(Binder.getCallingUid()); String[] uidPackages = getPackagesForUidInternal(callingUid, callingUid); if (uidPackages != null) { if (uidPackages != null) { for (String uidPackage : uidPackages) { for (String uidPackage : uidPackages) { PackageSetting ps = mSettings.getPackageLPr(uidPackage); PackageSetting ps = mSettings.getPackageLPr(uidPackage); Loading Loading @@ -23003,7 +23013,7 @@ public class PackageManagerService extends IPackageManager.Stub @Override @Override public AndroidPackage getPackage(int uid) { public AndroidPackage getPackage(int uid) { synchronized (mLock) { synchronized (mLock) { final String[] packageNames = getPackagesForUid(uid); final String[] packageNames = getPackagesForUidInternal(uid, Process.SYSTEM_UID); AndroidPackage pkg = null; AndroidPackage pkg = null; final int numPackages = packageNames == null ? 0 : packageNames.length; final int numPackages = packageNames == null ? 0 : packageNames.length; for (int i = 0; pkg == null && i < numPackages; i++) { for (int i = 0; pkg == null && i < numPackages; i++) { Loading Loading @@ -24017,9 +24027,13 @@ public class PackageManagerService extends IPackageManager.Stub @Nullable @Nullable public PackageSetting getPackageSetting(String packageName) { public PackageSetting getPackageSetting(String packageName) { return getPackageSettingInternal(packageName, Binder.getCallingUid()); } private PackageSetting getPackageSettingInternal(String packageName, int callingUid) { synchronized (mLock) { synchronized (mLock) { packageName = resolveInternalPackageNameLPr( packageName = resolveInternalPackageNameInternalLocked( packageName, PackageManager.VERSION_CODE_HIGHEST); packageName, PackageManager.VERSION_CODE_HIGHEST, callingUid); return mSettings.mPackages.get(packageName); return mSettings.mPackages.get(packageName); } } } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +21 −7 Original line number Original line Diff line number Diff line Loading @@ -4600,7 +4600,7 @@ public class PackageManagerService extends IPackageManager.Stub synchronized (mLock) { synchronized (mLock) { final AndroidPackage p = mPackages.get(packageName); final AndroidPackage p = mPackages.get(packageName); if (p != null && p.isMatch(flags)) { if (p != null && p.isMatch(flags)) { PackageSetting ps = getPackageSetting(p.getPackageName()); PackageSetting ps = getPackageSettingInternal(p.getPackageName(), callingUid); if (shouldFilterApplicationLocked(ps, callingUid, userId)) { if (shouldFilterApplicationLocked(ps, callingUid, userId)) { return -1; return -1; } } Loading Loading @@ -5924,7 +5924,10 @@ public class PackageManagerService extends IPackageManager.Stub */ */ @Override @Override public String[] getPackagesForUid(int uid) { public String[] getPackagesForUid(int uid) { final int callingUid = Binder.getCallingUid(); return getPackagesForUidInternal(uid, Binder.getCallingUid()); } private String[] getPackagesForUidInternal(int uid, int callingUid) { final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null; final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null; final int userId = UserHandle.getUserId(uid); final int userId = UserHandle.getUserId(uid); final int appId = UserHandle.getAppId(uid); final int appId = UserHandle.getAppId(uid); Loading Loading @@ -17380,6 +17383,13 @@ public class PackageManagerService extends IPackageManager.Stub @GuardedBy("mLock") @GuardedBy("mLock") private String resolveInternalPackageNameLPr(String packageName, long versionCode) { private String resolveInternalPackageNameLPr(String packageName, long versionCode) { final int callingUid = Binder.getCallingUid(); return resolveInternalPackageNameInternalLocked(packageName, versionCode, callingUid); } private String resolveInternalPackageNameInternalLocked( String packageName, long versionCode, int callingUid) { // Handle renamed packages // Handle renamed packages String normalizedPackageName = mSettings.getRenamedPackageLPr(packageName); String normalizedPackageName = mSettings.getRenamedPackageLPr(packageName); packageName = normalizedPackageName != null ? normalizedPackageName : packageName; packageName = normalizedPackageName != null ? normalizedPackageName : packageName; Loading @@ -17393,12 +17403,12 @@ public class PackageManagerService extends IPackageManager.Stub // Figure out which lib versions the caller can see // Figure out which lib versions the caller can see LongSparseLongArray versionsCallerCanSee = null; LongSparseLongArray versionsCallerCanSee = null; final int callingAppId = UserHandle.getAppId(Binder.getCallingUid()); final int callingAppId = UserHandle.getAppId(callingUid); if (callingAppId != Process.SYSTEM_UID && callingAppId != Process.SHELL_UID if (callingAppId != Process.SYSTEM_UID && callingAppId != Process.SHELL_UID && callingAppId != Process.ROOT_UID) { && callingAppId != Process.ROOT_UID) { versionsCallerCanSee = new LongSparseLongArray(); versionsCallerCanSee = new LongSparseLongArray(); String libName = versionedLib.valueAt(0).getName(); String libName = versionedLib.valueAt(0).getName(); String[] uidPackages = getPackagesForUid(Binder.getCallingUid()); String[] uidPackages = getPackagesForUidInternal(callingUid, callingUid); if (uidPackages != null) { if (uidPackages != null) { for (String uidPackage : uidPackages) { for (String uidPackage : uidPackages) { PackageSetting ps = mSettings.getPackageLPr(uidPackage); PackageSetting ps = mSettings.getPackageLPr(uidPackage); Loading Loading @@ -23003,7 +23013,7 @@ public class PackageManagerService extends IPackageManager.Stub @Override @Override public AndroidPackage getPackage(int uid) { public AndroidPackage getPackage(int uid) { synchronized (mLock) { synchronized (mLock) { final String[] packageNames = getPackagesForUid(uid); final String[] packageNames = getPackagesForUidInternal(uid, Process.SYSTEM_UID); AndroidPackage pkg = null; AndroidPackage pkg = null; final int numPackages = packageNames == null ? 0 : packageNames.length; final int numPackages = packageNames == null ? 0 : packageNames.length; for (int i = 0; pkg == null && i < numPackages; i++) { for (int i = 0; pkg == null && i < numPackages; i++) { Loading Loading @@ -24017,9 +24027,13 @@ public class PackageManagerService extends IPackageManager.Stub @Nullable @Nullable public PackageSetting getPackageSetting(String packageName) { public PackageSetting getPackageSetting(String packageName) { return getPackageSettingInternal(packageName, Binder.getCallingUid()); } private PackageSetting getPackageSettingInternal(String packageName, int callingUid) { synchronized (mLock) { synchronized (mLock) { packageName = resolveInternalPackageNameLPr( packageName = resolveInternalPackageNameInternalLocked( packageName, PackageManager.VERSION_CODE_HIGHEST); packageName, PackageManager.VERSION_CODE_HIGHEST, callingUid); return mSettings.mPackages.get(packageName); return mSettings.mPackages.get(packageName); } } } }