From b17b2987d926fcf31d6072b6264aa739609022dd Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Sun, 6 Jun 2010 07:10:22 -0400 Subject: Avoid running past the end of the tokenizer. --- services/java/com/android/server/ProcessStats.java | 29 ++++++++++++---------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/services/java/com/android/server/ProcessStats.java b/services/java/com/android/server/ProcessStats.java index ac3b7235447..a185d2860e4 100644 --- a/services/java/com/android/server/ProcessStats.java +++ b/services/java/com/android/server/ProcessStats.java @@ -514,20 +514,23 @@ public class ProcessStats { StringTokenizer st = new StringTokenizer(file, "\n "); while (st.hasMoreElements()) { String token = st.nextToken(); - try { - long val = Long.parseLong(token); - tempSpeeds[speed] = val; - token = st.nextToken(); - val = Long.parseLong(token); - tempTimes[speed] = val; - speed++; - if (speed == MAX_SPEEDS) break; // No more - if (localLOGV && out == null) { - Log.v(TAG, "First time : Speed/Time = " + tempSpeeds[speed - 1] - + "\t" + tempTimes[speed - 1]); + if (st.hasMoreElements()) { + try { + + long val = Long.parseLong(token); + tempSpeeds[speed] = val; + token = st.nextToken(); + val = Long.parseLong(token); + tempTimes[speed] = val; + speed++; + if (speed == MAX_SPEEDS) break; // No more + if (localLOGV && out == null) { + Log.v(TAG, "First time : Speed/Time = " + tempSpeeds[speed - 1] + + "\t" + tempTimes[speed - 1]); + } + } catch (NumberFormatException nfe) { + Log.i(TAG, "Unable to parse time_in_state"); } - } catch (NumberFormatException nfe) { - Log.i(TAG, "Unable to parse time_in_state"); } } } -- cgit v1.2.3