diff options
| author | 2015-06-04 00:01:50 +0000 | |
|---|---|---|
| committer | 2015-06-04 00:01:53 +0000 | |
| commit | 0113144f790067fd0b3d4a99c2c190f1b6c606f3 (patch) | |
| tree | e2875cb480fcc0899703ac5067ea7ef455f9104a | |
| parent | 8d6a9363a16d1abd0a2ae5b6a59c96beacd2980c (diff) | |
| parent | a22c6328309d3c9e8bf7209bff87d104fbcb60ba (diff) | |
Merge "Fixed outOfBoundsException when logging discarded receiver." into mnc-dev
| -rw-r--r-- | services/core/java/com/android/server/am/BroadcastQueue.java | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index 745cb7e0ff7b..80b8a93a32f1 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -1121,25 +1121,23 @@ public final class BroadcastQueue { } final void logBroadcastReceiverDiscardLocked(BroadcastRecord r) { - if (r.nextReceiver > 0) { - Object curReceiver = r.receivers.get(r.nextReceiver-1); + final int logIndex = r.nextReceiver - 1; + if (logIndex >= 0 && logIndex < r.receivers.size()) { + Object curReceiver = r.receivers.get(logIndex); if (curReceiver instanceof BroadcastFilter) { BroadcastFilter bf = (BroadcastFilter) curReceiver; EventLog.writeEvent(EventLogTags.AM_BROADCAST_DISCARD_FILTER, bf.owningUserId, System.identityHashCode(r), - r.intent.getAction(), - r.nextReceiver - 1, - System.identityHashCode(bf)); + r.intent.getAction(), logIndex, System.identityHashCode(bf)); } else { - ResolveInfo ri = (ResolveInfo)curReceiver; + ResolveInfo ri = (ResolveInfo) curReceiver; EventLog.writeEvent(EventLogTags.AM_BROADCAST_DISCARD_APP, UserHandle.getUserId(ri.activityInfo.applicationInfo.uid), - System.identityHashCode(r), r.intent.getAction(), - r.nextReceiver - 1, ri.toString()); + System.identityHashCode(r), r.intent.getAction(), logIndex, ri.toString()); } } else { - Slog.w(TAG, "Discarding broadcast before first receiver is invoked: " - + r); + if (logIndex < 0) Slog.w(TAG, + "Discarding broadcast before first receiver is invoked: " + r); EventLog.writeEvent(EventLogTags.AM_BROADCAST_DISCARD_APP, -1, System.identityHashCode(r), r.intent.getAction(), |