Skip to content

Commit 5963e46

Browse files
Steven Morelandandroid-build-merge-worker-robot
authored andcommitted
libbinder: Parcel: grow rejects large data pos am: 0db4fce am: 788803b am: 009229d am: abfcdc8 am: e95795f am: 9180d6f
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/29918554 Change-Id: I627006e49f6d05424a163a571d92e615a61a82f9 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2 parents c60bf84 + 9180d6f commit 5963e46

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

libs/binder/Parcel.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2775,6 +2775,14 @@ status_t Parcel::growData(size_t len)
27752775
return BAD_VALUE;
27762776
}
27772777

2778+
if (mDataPos > mDataSize) {
2779+
// b/370831157 - this case used to abort. We also don't expect mDataPos < mDataSize, but
2780+
// this would only waste a bit of memory, so it's okay.
2781+
ALOGE("growData only expected at the end of a Parcel. pos: %zu, size: %zu, capacity: %zu",
2782+
mDataPos, len, mDataCapacity);
2783+
return BAD_VALUE;
2784+
}
2785+
27782786
if (len > SIZE_MAX - mDataSize) return NO_MEMORY; // overflow
27792787
if (mDataSize + len > SIZE_MAX / 3) return NO_MEMORY; // overflow
27802788
size_t newSize = ((mDataSize+len)*3)/2;

0 commit comments

Comments
 (0)