diff options
| author | 2016-06-16 10:02:38 -0700 | |
|---|---|---|
| committer | 2016-06-16 10:25:06 -0700 | |
| commit | 75aa534d3aafe17a912b2c2734bee9a76b1edd83 (patch) | |
| tree | 3de12168c8fa1ec07846018b09f91f9d98d178e4 | |
| parent | 29dbc3cc47a27ae09f0f5aacd778aded427444bc (diff) | |
Check extra type before blindingly casting to Parcelable.
BUG: 29402928
Change-Id: If1729b8a4fcde724372b0a23cfae723a5d9b4faa
| -rw-r--r-- | services/core/java/com/android/server/notification/NotificationManagerService.java | 19 |
1 files 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 0af0c7356fa3..d4ee02e75754 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<Parcelable> 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); + } } } } |