Merge "libbinder: Handle transaction failures correctly" am: 823fa55aec
am: 302abd03b6
* commit '302abd03b6db600c41b353213002ba552b3e0097':
libbinder: Handle transaction failures correctly
diff --git a/Parcel.cpp b/Parcel.cpp
index 0beea33..13ecc87 100644
--- a/Parcel.cpp
+++ b/Parcel.cpp
@@ -376,13 +376,11 @@
size_t Parcel::dataAvail() const
{
- // TODO: decide what to do about the possibility that this can
- // report an available-data size that exceeds a Java int's max
- // positive value, causing havoc. Fortunately this will only
- // happen if someone constructs a Parcel containing more than two
- // gigabytes of data, which on typical phone hardware is simply
- // not possible.
- return dataSize() - dataPosition();
+ size_t result = dataSize() - dataPosition();
+ if (result > INT32_MAX) {
+ abort();
+ }
+ return result;
}
size_t Parcel::dataPosition() const