From 8c0324752a7f47afd9e84f0a3088954b5d05a94b Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Thu, 2 Jul 2009 14:28:47 -0700 Subject: [PATCH] If we can't get the restore set's metadata, don't continue Without the metadata we can't verify the version number or the signatures of the apps whose data we'd be trying to restore against the apps present on device. This is not acceptable; we need to refuse to give data to an unauthenticated app. --- .../java/com/android/server/BackupManagerService.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java index c3b91577dd192..7977d1f33b15d 100644 --- a/services/java/com/android/server/BackupManagerService.java +++ b/services/java/com/android/server/BackupManagerService.java @@ -943,6 +943,15 @@ class BackupManagerService extends IBackupManager.Stub { mPackageManager, agentPackages); processOneRestore(omPackage, 0, IBackupAgent.Stub.asInterface(pmAgent.onBind())); + // Verify that the backup set includes metadata. If not, we can't do + // signature/version verification etc, so we simply do not proceed with + // the restore operation. + Metadata pmMeta = pmAgent.getRestoredMetadata(packageName); + if (pmMeta == null) { + Log.i(TAG, "No restore metadata available, so not restoring settings"); + return; + } + int count = 0; for (;;) { packageName = mTransport.nextRestorePackage();