diff options
author | Fyodor Kupolov <fkupolov@google.com> | 2018-02-20 17:02:35 -0800 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-03-21 19:24:34 +0000 |
commit | 3b607539bf9d7765f95cf19e8f2187d2c0e1cf40 (patch) | |
tree | 079e4161f4e4db9102ee9d034bf000c9b41a08ed | |
parent | 9bef31c10d81baddaf87b2b799bbffbfce6fbd7b (diff) | |
download | base-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.java | 7 |
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); + } } /** |