summaryrefslogtreecommitdiffstats
path: root/services/backup
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-07-07 11:57:25 -0700
committerSteve Kondik <steve@cyngn.com>2015-10-27 15:11:38 -0700
commitccebe4d46b2750e4ada865f1f60e123c0bac7cae (patch)
treefd4b5cbbc47c8172ef14a224f39d564d02033310 /services/backup
parentf2575a9857aae286343004d555ddc6446ff0f5fb (diff)
downloadframeworks_base-ccebe4d46b2750e4ada865f1f60e123c0bac7cae.zip
frameworks_base-ccebe4d46b2750e4ada865f1f60e123c0bac7cae.tar.gz
frameworks_base-ccebe4d46b2750e4ada865f1f60e123c0bac7cae.tar.bz2
backup: Fix a system server crash
* If we get into a state where the backup data is null, system server will go down in flames. Abort and kill any active agents if this happens. java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.FileDescriptor android.os.ParcelFileDescriptor.getFileDescriptor()' on a null object reference at com.android.server.backup.BackupManagerService$PerformBackupTask.operationComplete(BackupManagerService.java:2820) at com.android.server.backup.BackupManagerService$BackupHandler.handleMessage(BackupManagerService.java:778) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.os.HandlerThread.run(HandlerThread.java:61) Change-Id: I65cb3c7d75a417373e8a59b9150a61b5eb1939af
Diffstat (limited to 'services/backup')
-rw-r--r--services/backup/java/com/android/server/backup/BackupManagerService.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java
index 12003e2..a1ed6e9 100644
--- a/services/backup/java/com/android/server/backup/BackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/BackupManagerService.java
@@ -2931,6 +2931,12 @@ public class BackupManagerService {
final String pkgName = mCurrentPackage.packageName;
final long filepos = mBackupDataName.length();
+ if (mBackupDataName == null) {
+ failAgent(mAgentBinder, "Backup data was null: " + mBackupDataName);
+ addBackupTrace("backup data was null: " + mBackupDataName);
+ agentErrorCleanup();
+ return;
+ }
FileDescriptor fd = mBackupData.getFileDescriptor();
try {
// If it's a 3rd party app, see whether they wrote any protected keys