Don't crash when canceling alarms if a direct listener is present
If a direct listener alarm attempts to match a regular
PendingIntent alarm, it will attempt to fetch the binder of the
regular alarm's direct listener, which is null, and crash the
system with an NPE.
Bug: 25823676
Change-Id: I85fb98b43436930a2513274dc5ab408f7d41d97f
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index f9d9950..d721fa1 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -2167,7 +2167,7 @@
public boolean matches(PendingIntent pi, IAlarmListener rec) {
return (operation != null)
? operation.equals(pi)
- : listener.asBinder().equals(rec.asBinder());
+ : rec != null && listener.asBinder().equals(rec.asBinder());
}
public boolean matches(String packageName) {