Skip to content

Commit 611b730

Browse files
Check mDataPos to see if the Parcel needs to grow
Flag: EXEMPT bug fix Ignore-AOSP-First: security fix Test: atest binderUnitTest Bug: 399155883 Change-Id: I38b755ca3381cfca3300292873f763823fbf169b
1 parent d0503fa commit 611b730

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

libs/binder/Parcel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ status_t Parcel::appendFrom(const Parcel* parcel, size_t offset, size_t len) {
542542
return BAD_VALUE;
543543
}
544544

545-
if ((mDataSize+len) > mDataCapacity) {
545+
if ((mDataPos + len) > mDataCapacity) {
546546
// grow data
547547
err = growData(len);
548548
if (err != NO_ERROR) {

libs/binder/tests/binderParcelUnitTest.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,17 @@ TEST(Parcel, AppendPlainDataPartial) {
197197
ASSERT_EQ(2, p2.readInt32());
198198
}
199199

200+
TEST(Parcel, AppendWithBadDataPos) {
201+
Parcel p1;
202+
p1.writeInt32(1);
203+
p1.writeInt32(1);
204+
Parcel p2;
205+
p2.setDataCapacity(8);
206+
p2.setDataPosition(10000);
207+
208+
EXPECT_EQ(android::BAD_VALUE, p2.appendFrom(&p1, 0, 8));
209+
}
210+
200211
TEST(Parcel, HasBinders) {
201212
sp<IBinder> b1 = sp<BBinder>::make();
202213

0 commit comments

Comments
 (0)