Merge "RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package."" into oc-dev am: 7b08baaa2a

am: 86fd67ac10

Change-Id: Iae5fb04618205bd0c56a63ce160efe3b2eddc8a2
This commit is contained in:
Atanas Kirilov
2018-09-28 17:53:41 -07:00
committed by android-build-merger
2 changed files with 5 additions and 64 deletions

View File

@@ -624,8 +624,6 @@ public class PackageManagerService extends IPackageManager.Stub
*/
private static final boolean DEFAULT_PACKAGE_PARSER_CACHE_ENABLED = true;
private static final int PROTECTION_MASK_BASE = 0xf;
final ServiceThread mHandlerThread;
final PackageHandler mHandler;
@@ -5787,12 +5785,11 @@ public class PackageManagerService extends IPackageManager.Stub
@Override
public void revokeRuntimePermission(String packageName, String name, int userId) {
revokeRuntimePermission(packageName, name, userId, false /* Only if not fixed by policy */,
mSettings.getPermission(name));
revokeRuntimePermission(packageName, name, userId, false /* Only if not fixed by policy */);
}
private void revokeRuntimePermission(String packageName, String name, int userId,
boolean overridePolicy, BasePermission bp) {
boolean overridePolicy) {
if (!sUserManager.exists(userId)) {
Log.e(TAG, "No such user:" + userId);
return;
@@ -5818,6 +5815,7 @@ public class PackageManagerService extends IPackageManager.Stub
|| filterAppAccessLPr(ps, Binder.getCallingUid(), userId)) {
throw new IllegalArgumentException("Unknown package: " + packageName);
}
final BasePermission bp = mSettings.mPermissions.get(name);
if (bp == null) {
throw new IllegalArgumentException("Unknown permission: " + name);
}
@@ -5939,7 +5937,7 @@ public class PackageManagerService extends IPackageManager.Stub
try {
revokeRuntimePermission(packageName, permissionName, userId,
false, mSettings.getPermission(permissionName));
false);
} catch (IllegalArgumentException e) {
Slog.e(TAG, "Could not revoke " + permissionName + " from "
+ packageName, e);
@@ -12825,10 +12823,7 @@ public class PackageManagerService extends IPackageManager.Stub
if (DEBUG_REMOVE) Log.d(TAG, " Activities: " + r);
}
final ArrayList<String> allPackageNames = new ArrayList<>(mPackages.keySet());
N = pkg.permissions.size();
List<BasePermission> bps = new ArrayList<BasePermission>(N);
r = null;
for (i=0; i<N; i++) {
PackageParser.Permission p = pkg.permissions.get(i);
@@ -12837,10 +12832,6 @@ public class PackageManagerService extends IPackageManager.Stub
bp = mSettings.mPermissionTrees.get(p.info.name);
}
if (bp != null && bp.perm == p) {
if (((p.info.protectionLevel & PROTECTION_MASK_BASE) &
PermissionInfo.PROTECTION_DANGEROUS) != 0) {
bps.add(bp);
}
bp.perm = null;
if (DEBUG_REMOVE && chatty) {
if (r == null) {
@@ -12858,45 +12849,6 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
}
AsyncTask.execute(() -> {
final int numRemovedPermissions = bps.size();
for (int permissionNum = 0; permissionNum < numRemovedPermissions; permissionNum++) {
final int[] userIds = mUserManagerInternal.getUserIds();
final int numUserIds = userIds.length;
final int numPackages = allPackageNames.size();
for (int packageNum = 0; packageNum < numPackages; packageNum++) {
final String packageName = allPackageNames.get(packageNum);
final PackageManagerInternal packageManagerInt =
LocalServices.getService(PackageManagerInternal.class);
final ApplicationInfo applicationInfo = packageManagerInt.getApplicationInfo(
packageName, 0, Process.SYSTEM_UID, UserHandle.USER_SYSTEM);
if (applicationInfo != null
&& applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) {
continue;
}
for (int userIdNum = 0; userIdNum < numUserIds; userIdNum++) {
final int userId = userIds[userIdNum];
final String permissionName = bps.get(permissionNum).name;
if (checkPermission(permissionName, packageName,
userId) == PackageManager.PERMISSION_GRANTED) {
try {
revokeRuntimePermission(packageName,
permissionName,
userId,
false,
bps.get(permissionNum));
} catch (IllegalArgumentException e) {
Slog.e(TAG, "Could not revoke " + permissionName + " from "
+ packageName, e);
}
}
}
}
}
});
if (r != null) {
if (DEBUG_REMOVE) Log.d(TAG, " Permissions: " + r);
}
@@ -25604,7 +25556,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
public void revokeRuntimePermission(String packageName, String name, int userId,
boolean overridePolicy) {
PackageManagerService.this.revokeRuntimePermission(packageName, name, userId,
overridePolicy, mSettings.getPermission(name));
overridePolicy);
}
@Override

View File

@@ -449,17 +449,6 @@ final class Settings {
mBackupStoppedPackagesFilename = new File(mSystemDir, "packages-stopped-backup.xml");
}
public @Nullable BasePermission getPermission(@NonNull String permName) {
synchronized (mLock) {
return getPermissionLocked(permName);
}
}
@GuardedBy("mLock")
@Nullable BasePermission getPermissionLocked(@NonNull String permName) {
return mPermissions.get(permName);
}
PackageSetting getPackageLPr(String pkgName) {
return mPackages.get(pkgName);
}