diff options
author | Christopher Tate <ctate@google.com> | 2012-03-23 13:00:05 -0700 |
---|---|---|
committer | Christopher Tate <ctate@google.com> | 2012-03-23 13:00:05 -0700 |
commit | 9c2efb35e23eb875e8d901c39a94ce9dc14bf0dc (patch) | |
tree | b9253e68c2a48de250035577c30302b5df588c9c /services/java/com/android/server/BackupManagerService.java | |
parent | 54c546223cd550d2995ec6d956a8e7963311a0a6 (diff) |
Sanity-check backup agent name prior to instantiation
Fixes a crash that would occur if an app with a pending backup
pass in the pipeline was updated to remove its agent declaration
from the manifest (or other more esoteric ways that a backup
pass was expected to run for an app without their own agent).
Bug 5776591
Change-Id: I5a8bc8c12de6a2bfa82f5093fe3a15b754109ab1
Diffstat (limited to 'services/java/com/android/server/BackupManagerService.java')
-rw-r--r-- | services/java/com/android/server/BackupManagerService.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java index a7b08f5b57fb..be2e549be39d 100644 --- a/services/java/com/android/server/BackupManagerService.java +++ b/services/java/com/android/server/BackupManagerService.java @@ -1986,6 +1986,16 @@ class BackupManagerService extends IBackupManager.Stub { try { mCurrentPackage = mPackageManager.getPackageInfo(request.packageName, PackageManager.GET_SIGNATURES); + if (mCurrentPackage.applicationInfo.backupAgentName == null) { + // The manifest has changed but we had a stale backup request pending. + // This won't happen again because the app won't be requesting further + // backups. + Slog.i(TAG, "Package " + request.packageName + + " no longer supports backup; skipping"); + addBackupTrace("skipping - no agent, completion is noop"); + executeNextState(BackupState.RUNNING_QUEUE); + return; + } IBackupAgent agent = null; try { |