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
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp
index 31667d9..7a4ddc4 100644
--- a/libs/binder/Parcel.cpp
+++ b/libs/binder/Parcel.cpp
@@ -735,9 +735,9 @@
}
if (!val) {
- return writeAligned(-1);
+ return writeInt32(-1);
}
- status_t ret = writeAligned(len);
+ status_t ret = writeInt32(static_cast<uint32_t>(len));
if (ret == NO_ERROR) {
ret = write(val, len * sizeof(*val));
}
@@ -751,9 +751,9 @@
}
if (!val) {
- return writeAligned(-1);
+ return writeInt32(-1);
}
- status_t ret = writeAligned(len);
+ status_t ret = writeInt32(static_cast<uint32_t>(len));
if (ret == NO_ERROR) {
ret = write(val, len * sizeof(*val));
}