summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFyodor Kupolov <fkupolov@google.com>2018-02-20 17:02:35 -0800
committerandroid-build-team Robot <android-build-team-robot@google.com>2018-03-21 19:24:34 +0000
commit3b607539bf9d7765f95cf19e8f2187d2c0e1cf40 (patch)
tree079e4161f4e4db9102ee9d034bf000c9b41a08ed
parent9bef31c10d81baddaf87b2b799bbffbfce6fbd7b (diff)
downloadbase-3b607539bf9d7765f95cf19e8f2187d2c0e1cf40.tar.gz
Verify last array's length in readFromParcel
Length of the last array in readFromParcel should be the same as value of mNextIndex. Test: PoC app in the bug Bug: 73252178 Change-Id: I69f935949e945c3a036b19b4f88684d906079ea5 (cherry picked from commit 3b8bc2e45048527d7682b24b96957c34433da382)
-rw-r--r--core/java/com/android/internal/app/procstats/SparseMappingTable.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/core/java/com/android/internal/app/procstats/SparseMappingTable.java b/core/java/com/android/internal/app/procstats/SparseMappingTable.java
index 956ce99c0ad8..91b205479988 100644
--- a/core/java/com/android/internal/app/procstats/SparseMappingTable.java
+++ b/core/java/com/android/internal/app/procstats/SparseMappingTable.java
@@ -18,6 +18,7 @@ package com.android.internal.app.procstats;
import android.os.Build;
import android.os.Parcel;
+import android.util.EventLog;
import android.util.Slog;
import libcore.util.EmptyArray;
@@ -529,6 +530,12 @@ public class SparseMappingTable {
readCompactedLongArray(in, array, size);
mLongs.add(array);
}
+ // Verify that last array's length is consistent with writeToParcel
+ if (N > 0 && mLongs.get(N - 1).length != mNextIndex) {
+ EventLog.writeEvent(0x534e4554, "73252178", -1, "");
+ throw new IllegalStateException("Expected array of length " + mNextIndex + " but was "
+ + mLongs.get(N - 1).length);
+ }
}
/**