diff options
author | Steve Kondik <steve@cyngn.com> | 2015-07-07 11:57:25 -0700 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-10-27 15:11:38 -0700 |
commit | ccebe4d46b2750e4ada865f1f60e123c0bac7cae (patch) | |
tree | fd4b5cbbc47c8172ef14a224f39d564d02033310 /services/backup | |
parent | f2575a9857aae286343004d555ddc6446ff0f5fb (diff) | |
download | frameworks_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.java | 6 |
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 |