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

Commit 677ec9de authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "libbinder: build ParcelFileDescriptor on Trusty" am: b503c1a5 am:...

Merge "libbinder: build ParcelFileDescriptor on Trusty" am: b503c1a5 am: 6d1041cc am: 6e6cae81 am: d14f6f44

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2173181



Change-Id: Ie0a806fd6967055d9420e5f3acc2a706b653afc2
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 513b631f d14f6f44
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -48,4 +48,14 @@ status_t getRandomBytes(uint8_t* data, size_t size) {
    return OK;
}

status_t dupFileDescriptor(int oldFd, int* newFd) {
    int ret = fcntl(oldFd, F_DUPFD_CLOEXEC, 0);
    if (ret < 0) {
        return -errno;
    }

    *newFd = ret;
    return OK;
}

} // namespace android
+2 −0
Original line number Diff line number Diff line
@@ -28,4 +28,6 @@ android::base::Result<void> setNonBlocking(android::base::borrowed_fd fd);

status_t getRandomBytes(uint8_t* data, size_t size);

status_t dupFileDescriptor(int oldFd, int* newFd);

} // namespace android
+19 −8
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@
#include <utils/String8.h>
#include <utils/misc.h>

#include "OS.h"
#include "RpcState.h"
#include "Static.h"
#include "Utils.h"
@@ -1477,9 +1478,9 @@ status_t Parcel::writeFileDescriptor(int fd, bool takeOwnership) {

status_t Parcel::writeDupFileDescriptor(int fd)
{
    int dupFd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
    if (dupFd < 0) {
        return -errno;
    int dupFd;
    if (status_t err = dupFileDescriptor(fd, &dupFd); err != OK) {
        return err;
    }
    status_t err = writeFileDescriptor(dupFd, true /*takeOwnership*/);
    if (err != OK) {
@@ -1496,9 +1497,9 @@ status_t Parcel::writeParcelFileDescriptor(int fd, bool takeOwnership)

status_t Parcel::writeDupParcelFileDescriptor(int fd)
{
    int dupFd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
    if (dupFd < 0) {
        return -errno;
    int dupFd;
    if (status_t err = dupFileDescriptor(fd, &dupFd); err != OK) {
        return err;
    }
    status_t err = writeParcelFileDescriptor(dupFd, true /*takeOwnership*/);
    if (err != OK) {
@@ -2295,7 +2296,12 @@ status_t Parcel::readUniqueFileDescriptor(base::unique_fd* val) const
        return BAD_TYPE;
    }

    val->reset(fcntl(got, F_DUPFD_CLOEXEC, 0));
    int dupFd;
    if (status_t err = dupFileDescriptor(got, &dupFd); err != OK) {
        return BAD_VALUE;
    }

    val->reset(dupFd);

    if (val->get() < 0) {
        return BAD_VALUE;
@@ -2312,7 +2318,12 @@ status_t Parcel::readUniqueParcelFileDescriptor(base::unique_fd* val) const
        return BAD_TYPE;
    }

    val->reset(fcntl(got, F_DUPFD_CLOEXEC, 0));
    int dupFd;
    if (status_t err = dupFileDescriptor(got, &dupFd); err != OK) {
        return BAD_VALUE;
    }

    val->reset(dupFd);

    if (val->get() < 0) {
        return BAD_VALUE;
+5 −0
Original line number Diff line number Diff line
@@ -32,4 +32,9 @@ status_t getRandomBytes(uint8_t* data, size_t size) {
    return res == 1 ? OK : UNKNOWN_ERROR;
}

status_t dupFileDescriptor(int oldFd, int* newFd) {
    // TODO: implement separately
    return INVALID_OPERATION;
}

} // namespace android
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ MODULE_SRCS := \
	$(LIBBINDER_DIR)/IInterface.cpp \
	$(LIBBINDER_DIR)/IResultReceiver.cpp \
	$(LIBBINDER_DIR)/Parcel.cpp \
	$(LIBBINDER_DIR)/ParcelFileDescriptor.cpp \
	$(LIBBINDER_DIR)/RpcServer.cpp \
	$(LIBBINDER_DIR)/RpcSession.cpp \
	$(LIBBINDER_DIR)/RpcState.cpp \