From bca8f94b73f48080e1d4fa8bc1a9a9efabf9f629 Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Mon, 9 Oct 2023 17:42:37 +0000 Subject: Disable Blob outside of Android Bug: 302723053 Test: mma Change-Id: I2abc138831da28783b26efe75ee6f4583e263692 --- libs/binder/Android.bp | 16 ++++++++++++++++ libs/binder/Parcel.cpp | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index fd2b27f839..67e92ca1cb 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -358,6 +358,22 @@ cc_library_static { ], } +cc_library_static { + name: "libbinder_rpc_no_blob", + vendor_available: true, + defaults: [ + "libbinder_common_defaults", + "libbinder_android_defaults", + "libbinder_kernel_defaults", + ], + cflags: [ + "-DBINDER_DISABLE_BLOB", + ], + visibility: [ + ":__subpackages__", + ], +} + cc_library_static { name: "libbinder_rpc_single_threaded", defaults: [ diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 16944a6221..a59b9284fc 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -40,7 +40,9 @@ #include #include +#ifndef BINDER_DISABLE_BLOB #include +#endif #include #include #include @@ -1548,6 +1550,12 @@ status_t Parcel::writeUniqueFileDescriptor(const base::unique_fd& fd) { status_t Parcel::writeBlob(size_t len, bool mutableCopy, WritableBlob* outBlob) { +#ifdef BINDER_DISABLE_BLOB + (void)len; + (void)mutableCopy; + (void)outBlob; + return INVALID_OPERATION; +#else if (len > INT32_MAX) { // don't accept size_t values which may have come from an // inadvertent conversion from a negative int. @@ -1599,6 +1607,7 @@ status_t Parcel::writeBlob(size_t len, bool mutableCopy, WritableBlob* outBlob) } ::close(fd); return status; +#endif } status_t Parcel::writeDupImmutableBlobFileDescriptor(int fd) @@ -2382,6 +2391,11 @@ status_t Parcel::readUniqueParcelFileDescriptor(base::unique_fd* val) const status_t Parcel::readBlob(size_t len, ReadableBlob* outBlob) const { +#ifdef BINDER_DISABLE_BLOB + (void)len; + (void)outBlob; + return INVALID_OPERATION; +#else int32_t blobType; status_t status = readInt32(&blobType); if (status) return status; @@ -2415,6 +2429,7 @@ status_t Parcel::readBlob(size_t len, ReadableBlob* outBlob) const outBlob->init(fd, ptr, len, isMutable); return NO_ERROR; +#endif } status_t Parcel::read(FlattenableHelperInterface& val) const @@ -3158,6 +3173,7 @@ size_t Parcel::getOpenAshmemSize() const } size_t openAshmemSize = 0; +#ifndef BINDER_DISABLE_BLOB for (size_t i = 0; i < kernelFields->mObjectsSize; i++) { const flat_binder_object* flat = reinterpret_cast(mData + kernelFields->mObjects[i]); @@ -3172,6 +3188,7 @@ size_t Parcel::getOpenAshmemSize() const } } } +#endif return openAshmemSize; } #endif // BINDER_WITH_KERNEL_IPC -- cgit v1.2.3-59-g8ed1b