Merge "Check permissions only against packagesettings" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3f345a99f7
@@ -520,6 +520,11 @@ public abstract class PackageManagerInternal {
|
||||
*/
|
||||
public abstract @Nullable PackageParser.Package getPackage(@NonNull String packageName);
|
||||
|
||||
/**
|
||||
* Returns a {@link com.android.server.pm.PackageSetting} for a given package name.
|
||||
*/
|
||||
public abstract @Nullable Object getPackageSetting(String packageName);
|
||||
|
||||
/**
|
||||
* Returns a list without a change observer.
|
||||
*
|
||||
|
||||
@@ -5305,7 +5305,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
synchronized (mPackages) {
|
||||
final String[] packageNames = getPackagesForUid(uid);
|
||||
final PackageParser.Package pkg = (packageNames != null && packageNames.length > 0)
|
||||
? mPackages.get(packageNames[0])
|
||||
? mSettings.getPackageLPr(packageNames[0]).getPackage()
|
||||
: null;
|
||||
return mPermissionManager.checkUidPermission(permName, pkg, uid, getCallingUid());
|
||||
}
|
||||
@@ -8071,7 +8071,6 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
callingUid = mIsolatedOwners.get(callingUid);
|
||||
}
|
||||
final PackageSetting ps = mSettings.mPackages.get(packageName);
|
||||
PackageParser.Package pkg = mPackages.get(packageName);
|
||||
final boolean returnAllowed =
|
||||
ps != null
|
||||
&& (isCallerSameApp(packageName, callingUid)
|
||||
@@ -8142,7 +8141,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
}
|
||||
|
||||
private boolean isCallerSameApp(String packageName, int uid) {
|
||||
PackageParser.Package pkg = mPackages.get(packageName);
|
||||
PackageParser.Package pkg = mSettings.getPackageLPr(packageName).getPackage();
|
||||
return pkg != null
|
||||
&& UserHandle.getAppId(uid) == pkg.applicationInfo.uid;
|
||||
}
|
||||
@@ -23624,6 +23623,13 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getPackageSetting(String packageName) {
|
||||
synchronized (mPackages) {
|
||||
return mSettings.getPackageLPr(packageName);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PackageList getPackageList(PackageListObserver observer) {
|
||||
synchronized (mPackages) {
|
||||
|
||||
@@ -212,12 +212,11 @@ public class PermissionManagerService {
|
||||
return PackageManager.PERMISSION_DENIED;
|
||||
}
|
||||
|
||||
final PackageParser.Package pkg = mPackageManagerInt.getPackage(pkgName);
|
||||
if (pkg != null && pkg.mExtras != null) {
|
||||
if (mPackageManagerInt.filterAppAccess(pkg, callingUid, userId)) {
|
||||
final PackageSetting ps = (PackageSetting) mPackageManagerInt.getPackageSetting(pkgName);
|
||||
if (ps != null && ps.getPackage() != null) {
|
||||
if (mPackageManagerInt.filterAppAccess(ps.getPackage(), callingUid, userId)) {
|
||||
return PackageManager.PERMISSION_DENIED;
|
||||
}
|
||||
final PackageSetting ps = (PackageSetting) pkg.mExtras;
|
||||
final boolean instantApp = ps.getInstantApp(userId);
|
||||
final PermissionsState permissionsState = ps.getPermissionsState();
|
||||
if (permissionsState.hasPermission(permName, userId)) {
|
||||
|
||||
Reference in New Issue
Block a user