Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5bd4fecb authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Gerrit Code Review
Browse files

Merge "Disable Blob outside of Android" into main

parents ecc40143 bca8f94b
Loading
Loading
Loading
Loading
+16 −0
Original line number Original line Diff line number Diff line
@@ -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 {
cc_library_static {
    name: "libbinder_rpc_single_threaded",
    name: "libbinder_rpc_single_threaded",
    defaults: [
    defaults: [
+17 −0
Original line number Original line Diff line number Diff line
@@ -40,7 +40,9 @@
#include <binder/TextOutput.h>
#include <binder/TextOutput.h>


#include <android-base/scopeguard.h>
#include <android-base/scopeguard.h>
#ifndef BINDER_DISABLE_BLOB
#include <cutils/ashmem.h>
#include <cutils/ashmem.h>
#endif
#include <utils/Flattenable.h>
#include <utils/Flattenable.h>
#include <utils/Log.h>
#include <utils/Log.h>
#include <utils/String16.h>
#include <utils/String16.h>
@@ -1548,6 +1550,12 @@ status_t Parcel::writeUniqueFileDescriptor(const base::unique_fd& fd) {


status_t Parcel::writeBlob(size_t len, bool mutableCopy, WritableBlob* outBlob)
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) {
    if (len > INT32_MAX) {
        // don't accept size_t values which may have come from an
        // don't accept size_t values which may have come from an
        // inadvertent conversion from a negative int.
        // inadvertent conversion from a negative int.
@@ -1599,6 +1607,7 @@ status_t Parcel::writeBlob(size_t len, bool mutableCopy, WritableBlob* outBlob)
    }
    }
    ::close(fd);
    ::close(fd);
    return status;
    return status;
#endif
}
}


status_t Parcel::writeDupImmutableBlobFileDescriptor(int fd)
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
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;
    int32_t blobType;
    status_t status = readInt32(&blobType);
    status_t status = readInt32(&blobType);
    if (status) return status;
    if (status) return status;
@@ -2415,6 +2429,7 @@ status_t Parcel::readBlob(size_t len, ReadableBlob* outBlob) const


    outBlob->init(fd, ptr, len, isMutable);
    outBlob->init(fd, ptr, len, isMutable);
    return NO_ERROR;
    return NO_ERROR;
#endif
}
}


status_t Parcel::read(FlattenableHelperInterface& val) const
status_t Parcel::read(FlattenableHelperInterface& val) const
@@ -3158,6 +3173,7 @@ size_t Parcel::getOpenAshmemSize() const
    }
    }


    size_t openAshmemSize = 0;
    size_t openAshmemSize = 0;
#ifndef BINDER_DISABLE_BLOB
    for (size_t i = 0; i < kernelFields->mObjectsSize; i++) {
    for (size_t i = 0; i < kernelFields->mObjectsSize; i++) {
        const flat_binder_object* flat =
        const flat_binder_object* flat =
                reinterpret_cast<const flat_binder_object*>(mData + kernelFields->mObjects[i]);
                reinterpret_cast<const flat_binder_object*>(mData + kernelFields->mObjects[i]);
@@ -3172,6 +3188,7 @@ size_t Parcel::getOpenAshmemSize() const
            }
            }
        }
        }
    }
    }
#endif
    return openAshmemSize;
    return openAshmemSize;
}
}
#endif // BINDER_WITH_KERNEL_IPC
#endif // BINDER_WITH_KERNEL_IPC