diff options
Diffstat (limited to 'libs/binder/Parcel.cpp')
| -rw-r--r-- | libs/binder/Parcel.cpp | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 6fb189cd70..f84f639d2c 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -2213,12 +2213,14 @@ void Parcel::ipcSetDataReference(const uint8_t* data, size_t dataSize,                type == BINDER_TYPE_FD)) {              // We should never receive other types (eg BINDER_TYPE_FDA) as long as we don't support              // them in libbinder. If we do receive them, it probably means a kernel bug; try to -            // recover gracefully by clearing out the objects, and releasing the objects we do -            // know about. +            // recover gracefully by clearing out the objects.              android_errorWriteLog(0x534e4554, "135930648"); +            android_errorWriteLog(0x534e4554, "203847542");              ALOGE("%s: unsupported type object (%" PRIu32 ") at offset %" PRIu64 "\n",                    __func__, type, (uint64_t)offset); -            releaseObjects(); + +            // WARNING: callers of ipcSetDataReference need to make sure they +            // don't rely on mObjectsSize in their release_func.              mObjectsSize = 0;              break;          }  |