OSDN Git Service

Clear the Parcel before writing an exception during a transaction
authorMichael Wachenschwanz <mwachens@google.com>
Thu, 16 May 2019 05:58:15 +0000 (22:58 -0700)
committerKevin F. Haggerty <haggertk@lineageos.org>
Fri, 6 Sep 2019 03:57:43 +0000 (21:57 -0600)
This prevents any object data from being accidentally overwritten by the
exception, which could cause unexpected malformed objects to be sent
across the transaction.

Test: atest CtsOsTestCases:ParcelTest#testExceptionOverwritesObject
Bug: 34175893
Change-Id: Iaf80a0ad711762992b8ae60f76d861c97a403013
Merged-In: Iaf80a0ad711762992b8ae60f76d861c97a403013
(cherry picked from commit f8ef5bcf21c87d8617f5e11810cc94350298d114)

core/java/android/os/Binder.java

index ea8ba2f..b9597ea 100644 (file)
@@ -574,6 +574,8 @@ public class Binder implements IBinder {
                     Log.w(TAG, "Caught a RuntimeException from the binder stub implementation.", e);
                 }
             } else {
+                // Clear the parcel before writing the exception
+                reply.setDataSize(0);
                 reply.setDataPosition(0);
                 reply.writeException(e);
             }