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

Commit d42b3b59 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Automerger Merge Worker
Browse files

Merge "Copy HexString to libbinder" into main am: 80fff999 am: d6ffcf21...

Merge "Copy HexString to libbinder" into main am: 80fff999 am: d6ffcf21 am: 28db0b66 am: b9be623c

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



Change-Id: I58e24f1457d85c3149c5cf60baca02e9b78e38ce
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 697973fb b9be623c
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@
#include <thread>
#include <vector>

#include <android-base/hex.h>
#include <android-base/scopeguard.h>
#include <binder/Parcel.h>
#include <binder/RpcServer.h>
@@ -484,7 +483,7 @@ void RpcServer::establishConnection(
                // don't block if there is some entropy issue
                if (tries++ > 5) {
                    ALOGE("Cannot find new address: %s",
                          base::HexString(sessionId.data(), sessionId.size()).c_str());
                          HexString(sessionId.data(), sessionId.size()).c_str());
                    return;
                }

@@ -536,7 +535,7 @@ void RpcServer::establishConnection(
            auto it = server->mSessions.find(sessionId);
            if (it == server->mSessions.end()) {
                ALOGE("Cannot add thread, no record of session with ID %s",
                      base::HexString(sessionId.data(), sessionId.size()).c_str());
                      HexString(sessionId.data(), sessionId.size()).c_str());
                return;
            }
            session = it->second;
@@ -610,15 +609,14 @@ status_t RpcServer::setupRawSocketServer(unique_fd socket_fd) {
void RpcServer::onSessionAllIncomingThreadsEnded(const sp<RpcSession>& session) {
    const std::vector<uint8_t>& id = session->mId;
    LOG_ALWAYS_FATAL_IF(id.empty(), "Server sessions must be initialized with ID");
    LOG_RPC_DETAIL("Dropping session with address %s",
                   base::HexString(id.data(), id.size()).c_str());
    LOG_RPC_DETAIL("Dropping session with address %s", HexString(id.data(), id.size()).c_str());

    RpcMutexLockGuard _l(mLock);
    auto it = mSessions.find(id);
    LOG_ALWAYS_FATAL_IF(it == mSessions.end(), "Bad state, unknown session id %s",
                        base::HexString(id.data(), id.size()).c_str());
                        HexString(id.data(), id.size()).c_str());
    LOG_ALWAYS_FATAL_IF(it->second != session, "Bad state, session has id mismatch %s",
                        base::HexString(id.data(), id.size()).c_str());
                        HexString(id.data(), id.size()).c_str());
    (void)mSessions.erase(it);
}

+2 −4
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@

#include <string_view>

#include <android-base/hex.h>
#include <android-base/macros.h>
#include <android-base/scopeguard.h>
#include <binder/BpBinder.h>
@@ -310,8 +309,7 @@ status_t RpcSession::readId() {
    status = state()->getSessionId(connection.get(), sp<RpcSession>::fromExisting(this), &mId);
    if (status != OK) return status;

    LOG_RPC_DETAIL("RpcSession %p has id %s", this,
                   base::HexString(mId.data(), mId.size()).c_str());
    LOG_RPC_DETAIL("RpcSession %p has id %s", this, HexString(mId.data(), mId.size()).c_str());
    return OK;
}

@@ -709,7 +707,7 @@ status_t RpcSession::initAndAddConnection(RpcTransportFd fd, const std::vector<u
                                                std::nullopt, nullptr);
        if (sendSessionIdStatus != OK) {
            ALOGE("Could not write session ID ('%s') to socket: %s",
                  base::HexString(sessionId.data(), sessionId.size()).c_str(),
                  HexString(sessionId.data(), sessionId.size()).c_str(),
                  statusToString(sendSessionIdStatus).c_str());
            return sendSessionIdStatus;
        }
+2 −3
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@

#include "RpcState.h"

#include <android-base/hex.h>
#include <android-base/macros.h>
#include <android-base/scopeguard.h>
#include <android-base/stringprintf.h>
@@ -363,7 +362,7 @@ status_t RpcState::rpcSend(
    for (int i = 0; i < niovs; i++) {
        LOG_RPC_DETAIL("Sending %s (part %d of %d) on RpcTransport %p: %s",
                       what, i + 1, niovs, connection->rpcTransport.get(),
                       android::base::HexString(iovs[i].iov_base, iovs[i].iov_len).c_str());
                       HexString(iovs[i].iov_base, iovs[i].iov_len).c_str());
    }

    if (status_t status =
@@ -398,7 +397,7 @@ status_t RpcState::rpcRec(
    for (int i = 0; i < niovs; i++) {
        LOG_RPC_DETAIL("Received %s (part %d of %d) on RpcTransport %p: %s",
                       what, i + 1, niovs, connection->rpcTransport.get(),
                       android::base::HexString(iovs[i].iov_base, iovs[i].iov_len).c_str());
                       HexString(iovs[i].iov_base, iovs[i].iov_len).c_str());
    }
    return OK;
}
+19 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

#include "Utils.h"

#include <android-base/logging.h>
#include <string.h>

namespace android {
@@ -24,4 +25,22 @@ void zeroMemory(uint8_t* data, size_t size) {
    memset(data, 0, size);
}

std::string HexString(const void* bytes, size_t len) {
    CHECK(bytes != nullptr || len == 0) << bytes << " " << len;

    // b/132916539: Doing this the 'C way', std::setfill triggers ubsan implicit conversion
    const uint8_t* bytes8 = static_cast<const uint8_t*>(bytes);
    const char chars[] = "0123456789abcdef";
    std::string result;
    result.resize(len * 2);

    for (size_t i = 0; i < len; i++) {
        const auto c = bytes8[i];
        result[2 * i] = chars[c >> 4];
        result[2 * i + 1] = chars[c & 0xf];
    }

    return result;
}

} // namespace android
+6 −0
Original line number Diff line number Diff line
@@ -70,4 +70,10 @@ struct Span {
    }
};

// Converts binary data into a hexString.
//
// Hex values are printed in order, e.g. 0xDEAD will result in 'adde' because
// Android is little-endian.
std::string HexString(const void* bytes, size_t len);

}   // namespace android
Loading