diff options
author | Romain Guy <romainguy@android.com> | 2010-07-29 14:00:48 -0700 |
---|---|---|
committer | Android Code Review <code-review@android.com> | 2010-07-29 14:00:48 -0700 |
commit | ce3ac5f02970fcab91e16ecb573931d209b1985c (patch) | |
tree | 570c56bbf0adfe9e95d7fb4cb16bbc57723cab41 | |
parent | e53fe4a465a014788e3b93ca9f30f229481bc4e5 (diff) | |
parent | 3372f2e259247810627fd22033406163284f4f64 (diff) | |
download | frameworks_base-ce3ac5f02970fcab91e16ecb573931d209b1985c.zip frameworks_base-ce3ac5f02970fcab91e16ecb573931d209b1985c.tar.gz frameworks_base-ce3ac5f02970fcab91e16ecb573931d209b1985c.tar.bz2 |
Merge "Corrected buffer overflow when parsing /proc/wakelocks"
-rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index aadb576..167e45d 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -844,7 +844,7 @@ public final class BatteryStatsImpl extends BatteryStats { private final Map<String, KernelWakelockStats> readKernelWakelockStats() { - byte[] buffer = new byte[4096]; + byte[] buffer = new byte[8192]; int len; try { @@ -891,9 +891,11 @@ public final class BatteryStatsImpl extends BatteryStats { for (endIndex=startIndex; endIndex < len && wlBuffer[endIndex] != '\n' && wlBuffer[endIndex] != '\0'; endIndex++); - // Don't go over the end of the buffer - if (endIndex < len) { - endIndex++; // endIndex is an exclusive upper bound. + endIndex++; // endIndex is an exclusive upper bound. + // Don't go over the end of the buffer, Process.parseProcLine might + // write to wlBuffer[endIndex] + if (endIndex >= (len - 1) ) { + return m; } String[] nameStringArray = mProcWakelocksName; |