Merge "RESTRICT AUTOMERGE: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package."" into oc-dev
am: 7b08baaa2a
Change-Id: Ie963bfc2a22b5c2cb84e71611af755dc23594086
This commit is contained in:
@@ -604,8 +604,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;
|
||||
@@ -5497,12 +5495,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;
|
||||
@@ -5528,6 +5525,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);
|
||||
}
|
||||
@@ -5649,7 +5647,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);
|
||||
@@ -12332,10 +12330,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);
|
||||
@@ -12344,10 +12339,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) {
|
||||
@@ -12365,45 +12356,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);
|
||||
}
|
||||
@@ -24822,7 +24774,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
|
||||
|
||||
@@ -448,17 +448,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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user