summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2010-07-29 14:00:48 -0700
committerAndroid Code Review <code-review@android.com>2010-07-29 14:00:48 -0700
commitce3ac5f02970fcab91e16ecb573931d209b1985c (patch)
tree570c56bbf0adfe9e95d7fb4cb16bbc57723cab41
parente53fe4a465a014788e3b93ca9f30f229481bc4e5 (diff)
parent3372f2e259247810627fd22033406163284f4f64 (diff)
downloadframeworks_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.java10
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;