summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Annie Meng <anniemeng@google.com> 2019-01-31 17:23:12 +0000
committer Annie Meng <anniemeng@google.com> 2019-01-31 17:23:12 +0000
commit924c8a92ac41e4130861329f009f03f9af664f49 (patch)
treeca5fb94283967755b2029b2ce52a67041c4fc35b
parentc7026dd6ae32aadb55ecc764ff2e143b70defc9d (diff)
[Multi-user] Whitelist "android" for non-system user backup
Move to a whitelist of system apps that are eligible for backup in non-system users. Bug: 123349308 Test: "adb shell bmgr backupnow android" succeeds for system and non-system users. Change-Id: I7bc4982a6e105c2343636532dd2010aa43132d23
-rw-r--r--services/backup/java/com/android/server/backup/utils/AppBackupUtils.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
index 7ee304780530..593bb2c41587 100644
--- a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
+++ b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java
@@ -20,6 +20,7 @@ import static com.android.server.backup.BackupManagerService.MORE_DEBUG;
import static com.android.server.backup.BackupManagerService.TAG;
import static com.android.server.backup.UserBackupManagerService.PACKAGE_MANAGER_SENTINEL;
import static com.android.server.backup.UserBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE;
+import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
import android.annotation.Nullable;
import android.app.AppGlobals;
@@ -40,11 +41,18 @@ import com.android.internal.backup.IBackupTransport;
import com.android.internal.util.ArrayUtils;
import com.android.server.backup.transport.TransportClient;
+import com.google.android.collect.Sets;
+
+import java.util.Set;
+
/**
* Utility methods wrapping operations on ApplicationInfo and PackageInfo.
*/
public class AppBackupUtils {
private static final boolean DEBUG = false;
+ // Whitelist of system packages that are eligible for backup in non-system users.
+ private static final Set<String> systemPackagesWhitelistedForAllUsers =
+ Sets.newArraySet(PACKAGE_MANAGER_SENTINEL, PLATFORM_PACKAGE_NAME);
/**
* Returns whether app is eligible for backup.
@@ -72,9 +80,9 @@ public class AppBackupUtils {
// 2. they run as a system-level uid
if (UserHandle.isCore(app.uid)) {
- // and the backup is happening for non-system user
- if (userId != UserHandle.USER_SYSTEM && !app.packageName.equals(
- PACKAGE_MANAGER_SENTINEL)) {
+ // and the backup is happening for non-system user on a non-whitelisted package.
+ if (userId != UserHandle.USER_SYSTEM
+ && !systemPackagesWhitelistedForAllUsers.contains(app.packageName)) {
return false;
}