NotificationHistory validate position value

We get a position value in a parcel and verify it is smaller than that
parcel's data size before setting it.

Flag: EXEMPT bug fix
Ignore-AOSP-First: security fix
Test: atest NotificationHistoryTest
Bug: 399155883
(cherry picked from commit fd4045126ff01cec3d65c053a0c2c01dc231a0f5)
Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:27e0f2b515ca65729a84999e792cf7e8240025a9
Merged-In: Ica98d82d7d7c1c9c0defcff8d96bf5f36e8f5d36
Change-Id: Ica98d82d7d7c1c9c0defcff8d96bf5f36e8f5d36
diff --git a/core/java/android/app/NotificationHistory.java b/core/java/android/app/NotificationHistory.java
index eadb7e3..ac68df0 100644
--- a/core/java/android/app/NotificationHistory.java
+++ b/core/java/android/app/NotificationHistory.java
@@ -256,6 +256,10 @@
             mParcel.setDataPosition(0);
             mParcel.appendFrom(data, data.dataPosition(), listByteLength);
             mParcel.setDataSize(mParcel.dataPosition());
+            if (positionInParcel > mParcel.dataSize()) {
+                throw new IllegalStateException(
+                    "Obtained an invalid position value(" + positionInParcel + " from Parcel.");
+            }
             mParcel.setDataPosition(positionInParcel);
         }
     }