From 899edf6f4fef302ff219ee346b47afc5c8b640aa Mon Sep 17 00:00:00 2001 From: Sergey Poromov Date: Wed, 24 Feb 2016 17:21:59 +0100 Subject: [PATCH] Fix NPE when null BackupObserver is passed into BackupManager#requestBackup() BackupManagerService has the null check, but it doesn't work because passed BackupObserver object is wrapped into this BackupObserverWrapper. This was found during GTS testing. Bug: 27334738 Change-Id: I16dc0230824b326d3fae1f8489f58b0c0d4e1c7c --- core/java/android/app/backup/BackupManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/backup/BackupManager.java b/core/java/android/app/backup/BackupManager.java index 2268400ed573e..7fcca0969f759 100644 --- a/core/java/android/app/backup/BackupManager.java +++ b/core/java/android/app/backup/BackupManager.java @@ -468,7 +468,7 @@ public class BackupManager { * * @param packages List of package names to backup. * @param observer The {@link BackupObserver} to receive callbacks during the backup - * operation. + * operation. Could be {@code null}. * @return {@link BackupManager#SUCCESS} on success; nonzero on error. * @exception IllegalArgumentException on null or empty {@code packages} param. * @@ -479,8 +479,9 @@ public class BackupManager { checkServiceBinder(); if (sService != null) { try { - BackupObserverWrapper observerWrapper = - new BackupObserverWrapper(mContext, observer); + BackupObserverWrapper observerWrapper = observer == null + ? null + : new BackupObserverWrapper(mContext, observer); return sService.requestBackup(packages, observerWrapper); } catch (RemoteException e) { Log.e(TAG, "requestBackup() couldn't connect");