From e59cb43edad0eff28a81b18c3c4484442ff680dd Mon Sep 17 00:00:00 2001 From: Chad Brubaker Date: Tue, 30 Jun 2015 14:03:55 -0700 Subject: [PATCH] Fix writeByteArray/writeInt32Array size on x64 writeByteArray writes the size using sizeof(size_t), however it is always read using readInt32(). On devices where sizeof(size_t) != 4 this causes extra bytes to be written. BUG: 22204736 Change-Id: I8d4507b6b616857ef5827f1fe9da0907d09abf0e --- libs/binder/Parcel.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 31667d932..7a4ddc43a 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -735,9 +735,9 @@ status_t Parcel::writeInt32Array(size_t len, const int32_t *val) { } if (!val) { - return writeAligned(-1); + return writeInt32(-1); } - status_t ret = writeAligned(len); + status_t ret = writeInt32(static_cast(len)); if (ret == NO_ERROR) { ret = write(val, len * sizeof(*val)); } @@ -751,9 +751,9 @@ status_t Parcel::writeByteArray(size_t len, const uint8_t *val) { } if (!val) { - return writeAligned(-1); + return writeInt32(-1); } - status_t ret = writeAligned(len); + status_t ret = writeInt32(static_cast(len)); if (ret == NO_ERROR) { ret = write(val, len * sizeof(*val)); }