Loading libs/binder/Parcel.cpp +24 −2 Original line number Original line Diff line number Diff line Loading @@ -2239,8 +2239,30 @@ int Parcel::readParcelFileDescriptor() const int32_t hasComm = readInt32(); int32_t hasComm = readInt32(); int fd = readFileDescriptor(); int fd = readFileDescriptor(); if (hasComm != 0) { if (hasComm != 0) { // skip // detach (owned by the binder driver) readFileDescriptor(); int comm = readFileDescriptor(); // warning: this must be kept in sync with: // frameworks/base/core/java/android/os/ParcelFileDescriptor.java enum ParcelFileDescriptorStatus { DETACHED = 2, }; #if BYTE_ORDER == BIG_ENDIAN const int32_t message = ParcelFileDescriptorStatus::DETACHED; #endif #if BYTE_ORDER == LITTLE_ENDIAN const int32_t message = __builtin_bswap32(ParcelFileDescriptorStatus::DETACHED); #endif ssize_t written = TEMP_FAILURE_RETRY( ::write(comm, &message, sizeof(message))); if (written == -1 || written != sizeof(message)) { ALOGW("Failed to detach ParcelFileDescriptor written: %zd err: %s", written, strerror(errno)); return BAD_TYPE; } } } return fd; return fd; } } Loading Loading
libs/binder/Parcel.cpp +24 −2 Original line number Original line Diff line number Diff line Loading @@ -2239,8 +2239,30 @@ int Parcel::readParcelFileDescriptor() const int32_t hasComm = readInt32(); int32_t hasComm = readInt32(); int fd = readFileDescriptor(); int fd = readFileDescriptor(); if (hasComm != 0) { if (hasComm != 0) { // skip // detach (owned by the binder driver) readFileDescriptor(); int comm = readFileDescriptor(); // warning: this must be kept in sync with: // frameworks/base/core/java/android/os/ParcelFileDescriptor.java enum ParcelFileDescriptorStatus { DETACHED = 2, }; #if BYTE_ORDER == BIG_ENDIAN const int32_t message = ParcelFileDescriptorStatus::DETACHED; #endif #if BYTE_ORDER == LITTLE_ENDIAN const int32_t message = __builtin_bswap32(ParcelFileDescriptorStatus::DETACHED); #endif ssize_t written = TEMP_FAILURE_RETRY( ::write(comm, &message, sizeof(message))); if (written == -1 || written != sizeof(message)) { ALOGW("Failed to detach ParcelFileDescriptor written: %zd err: %s", written, strerror(errno)); return BAD_TYPE; } } } return fd; return fd; } } Loading