From 75aa534d3aafe17a912b2c2734bee9a76b1edd83 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Thu, 16 Jun 2016 10:02:38 -0700 Subject: [PATCH] Check extra type before blindingly casting to Parcelable. BUG: 29402928 Change-Id: If1729b8a4fcde724372b0a23cfae723a5d9b4faa --- .../NotificationManagerService.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 0af0c7356fa39..d4ee02e757549 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -2614,17 +2614,18 @@ public class NotificationManagerService extends SystemService { private static void setPendingIntentWhitelistDuration(ActivityManagerInternal am, long duration, Bundle extras) { for (String key : extras.keySet()) { - setPendingIntentWhitelistDuration(am, duration, extras.getParcelable(key)); - final Parcelable[] parcelableArray = extras.getParcelableArray(key); - if (parcelableArray != null) { - for (Parcelable parcelable: parcelableArray) { + final Object value = extras.get(key); + if (value instanceof Parcelable) { + setPendingIntentWhitelistDuration(am, duration, (Parcelable) value); + } else if (value instanceof Parcelable[]) { + for (Parcelable parcelable : (Parcelable[]) value) { setPendingIntentWhitelistDuration(am, duration, parcelable); } - } - final ArrayList parcelableList = extras.getParcelableArrayList(key); - if (parcelableList != null) { - for (Parcelable parcelable: parcelableList) { - setPendingIntentWhitelistDuration(am, duration, parcelable); + } else if (value instanceof List) { + for (Object element : (List ) value) { + if (element instanceof Parcelable) { + setPendingIntentWhitelistDuration(am, duration, (Parcelable) element); + } } } }