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