From e42c8416b0262e4fcda8c03428194a6a0b699d00 Mon Sep 17 00:00:00 2001 From: Artem Iglikov Date: Fri, 21 Apr 2017 09:50:56 +0100 Subject: [PATCH] [DO NOT MERGE] Fix potential NPE in Trampoline.requestBackup(). Before it was returning null in case the service was not initialized, but as the method signature has int as the return type, this was boxed and unboxed which would cause NPE. Now it will return BackupManager.ERROR_BACKUP_NOT_ALLOWED instead. This doesn't include fix for the test, because it's going to be cherry-picked into oc-dev, which doesn't have the tests. Test: manually ran unit tests Bug: 37535747 Change-Id: I186cf812a4ec67be943b5c4334c82e9af5320b7a --- .../backup/java/com/android/server/backup/Trampoline.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/backup/java/com/android/server/backup/Trampoline.java b/services/backup/java/com/android/server/backup/Trampoline.java index a109e6319faaa..2c14a7cd030e4 100644 --- a/services/backup/java/com/android/server/backup/Trampoline.java +++ b/services/backup/java/com/android/server/backup/Trampoline.java @@ -16,6 +16,7 @@ package com.android.server.backup; +import android.app.backup.BackupManager; import android.app.backup.IBackupManager; import android.app.backup.IBackupObserver; import android.app.backup.IBackupManagerMonitor; @@ -361,7 +362,10 @@ public class Trampoline extends IBackupManager.Stub { public int requestBackup(String[] packages, IBackupObserver observer, IBackupManagerMonitor monitor, int flags) throws RemoteException { BackupManagerService svc = mService; - return (svc != null) ? svc.requestBackup(packages, observer, monitor, flags) : null; + if (svc == null) { + return BackupManager.ERROR_BACKUP_NOT_ALLOWED; + } + return svc.requestBackup(packages, observer, monitor, flags); } @Override