diff options
| author | 2013-05-06 15:16:03 -0700 | |
|---|---|---|
| committer | 2013-05-06 15:16:03 -0700 | |
| commit | 04d6141033c66a1777ba0c66d67a7540e4c3e89c (patch) | |
| tree | c3358824537ad1a8c1d21857a6cfd2c5e0ecf10b | |
| parent | 79ebe80a85ce97e3278f51e11086a2b89e09f86d (diff) | |
| parent | dfb33b860f0c936d8af6555835da0ef1aea6c870 (diff) | |
am dfb33b86: am fcfc99c0: am f7918b4a: am d3a57029: am 1b0c9c95: am 81c1d8d3: Ensure install-during-restore is like install-then-restore
* commit 'dfb33b860f0c936d8af6555835da0ef1aea6c870':
Ensure install-during-restore is like install-then-restore
| -rw-r--r-- | services/java/com/android/server/BackupManagerService.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java index 7ac314b8a7a9..6044eed8b3da 100644 --- a/services/java/com/android/server/BackupManagerService.java +++ b/services/java/com/android/server/BackupManagerService.java @@ -3591,7 +3591,16 @@ class BackupManagerService extends IBackupManager.Stub { } else { // So far so good -- do the signatures match the manifest? Signature[] sigs = mManifestSignatures.get(info.packageName); - if (!signaturesMatch(sigs, pkg)) { + if (signaturesMatch(sigs, pkg)) { + // If this is a system-uid app without a declared backup agent, + // don't restore any of the file data. + if ((pkg.applicationInfo.uid < Process.FIRST_APPLICATION_UID) + && (pkg.applicationInfo.backupAgentName == null)) { + Slog.w(TAG, "Installed app " + info.packageName + + " has restricted uid and no agent"); + okay = false; + } + } else { Slog.w(TAG, "Installed app " + info.packageName + " signatures do not match restore manifest"); okay = false; |