diff options
| author | 2019-01-31 17:23:12 +0000 | |
|---|---|---|
| committer | 2019-01-31 17:23:12 +0000 | |
| commit | 924c8a92ac41e4130861329f009f03f9af664f49 (patch) | |
| tree | ca5fb94283967755b2029b2ce52a67041c4fc35b | |
| parent | c7026dd6ae32aadb55ecc764ff2e143b70defc9d (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.java | 14 |
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; } |