diff options
author | Brad Fitzpatrick <bradfitz@android.com> | 2010-07-15 23:05:39 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-07-15 23:05:39 -0700 |
commit | d2f6c7fe735ffcdb67852c6a1287565a2afa412d (patch) | |
tree | 227009693183c0285bfae75f18620a68fc375759 /libs/binder | |
parent | 9555a1323e846aba16e6a7f2e5d9a9227523e595 (diff) | |
parent | 3e5e21d4dc74751e64d17379c5563ece39a7e35d (diff) | |
download | frameworks_base-d2f6c7fe735ffcdb67852c6a1287565a2afa412d.zip frameworks_base-d2f6c7fe735ffcdb67852c6a1287565a2afa412d.tar.gz frameworks_base-d2f6c7fe735ffcdb67852c6a1287565a2afa412d.tar.bz2 |
am 3e5e21d4: am 1772c34e: Merge "StrictMode: gather and return violating stacks in Binder replies" into gingerbread
Merge commit '3e5e21d4dc74751e64d17379c5563ece39a7e35d'
* commit '3e5e21d4dc74751e64d17379c5563ece39a7e35d':
StrictMode: gather and return violating stacks in Binder replies
Diffstat (limited to 'libs/binder')
-rw-r--r-- | libs/binder/Parcel.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index bed893a..60babad 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -51,6 +51,9 @@ // Note: must be kept in sync with android/os/StrictMode.java's PENALTY_GATHER #define STRICT_MODE_PENALTY_GATHER 0x100 +// Note: must be kept in sync with android/os/Parcel.java's EX_HAS_REPLY_HEADER +#define EX_HAS_REPLY_HEADER -128 + // XXX This can be made public if we want to provide // support for typed data. struct small_flat_data @@ -959,7 +962,15 @@ wp<IBinder> Parcel::readWeakBinder() const int32_t Parcel::readExceptionCode() const { int32_t exception_code = readAligned<int32_t>(); - // TODO: skip over the response header here, once that's in. + if (exception_code == EX_HAS_REPLY_HEADER) { + int32_t header_size = readAligned<int32_t>(); + // Skip over fat responses headers. Not used (or propagated) in + // native code + setDataPosition(dataPosition() + header_size); + // And fat response headers are currently only used when there are no + // exceptions, so return no error: + return 0; + } return exception_code; } |