diff options
-rw-r--r-- | libs/binder/Android.bp | 7 | ||||
-rw-r--r-- | libs/binder/Debug.cpp | 16 | ||||
-rw-r--r-- | libs/binder/Debug.h | 2 | ||||
-rw-r--r-- | libs/binder/RpcAddress.cpp | 3 | ||||
-rw-r--r-- | libs/binder/RpcState.cpp | 5 | ||||
-rw-r--r-- | libs/binder/tests/binderClearBufTest.cpp | 19 | ||||
-rw-r--r-- | libs/binder/tests/parcel_fuzzer/Android.bp | 1 | ||||
-rw-r--r-- | libs/binder/tests/parcel_fuzzer/binder.cpp | 6 | ||||
-rw-r--r-- | libs/binder/tests/parcel_fuzzer/hwbinder.cpp | 8 | ||||
-rw-r--r-- | libs/binder/tests/parcel_fuzzer/main.cpp | 6 | ||||
-rw-r--r-- | libs/binder/tests/parcel_fuzzer/util.cpp | 41 | ||||
-rw-r--r-- | libs/binder/tests/parcel_fuzzer/util.h | 3 |
12 files changed, 24 insertions, 93 deletions
diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index 76249384a0..2027b6e36e 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -147,9 +147,6 @@ cc_library { enabled: false, }, host: { - static_libs: [ - "libbase", - ], srcs: [ "ServiceManagerHost.cpp", "UtilsHost.cpp", @@ -190,6 +187,10 @@ cc_library { "libutils", ], + static_libs: [ + "libbase", + ], + header_libs: [ "libbinder_headers", "libandroid_runtime_vm_headers", diff --git a/libs/binder/Debug.cpp b/libs/binder/Debug.cpp index 86769551d7..e4ac4b49a4 100644 --- a/libs/binder/Debug.cpp +++ b/libs/binder/Debug.cpp @@ -26,22 +26,6 @@ namespace android { -std::string hexString(const void* bytes, size_t len) { - if (bytes == nullptr) return "<null>"; - - 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++) { - result[2 * i] = chars[bytes8[i] >> 4]; - result[2 * i + 1] = chars[bytes8[i] & 0xf]; - } - - return result; -} - // --------------------------------------------------------------------- static const char indentStr[] = diff --git a/libs/binder/Debug.h b/libs/binder/Debug.h index 7ca087e7d2..262dfbac82 100644 --- a/libs/binder/Debug.h +++ b/libs/binder/Debug.h @@ -23,8 +23,6 @@ namespace android { // --------------------------------------------------------------------------- -std::string hexString(const void* data, size_t size); - const char* stringForIndent(int32_t indentLevel); typedef void (*debugPrintFunc)(void* cookie, const char* txt); diff --git a/libs/binder/RpcAddress.cpp b/libs/binder/RpcAddress.cpp index 98dee9a039..ffc94b94b3 100644 --- a/libs/binder/RpcAddress.cpp +++ b/libs/binder/RpcAddress.cpp @@ -16,6 +16,7 @@ #include <binder/RpcAddress.h> +#include <android-base/hex.h> #include <binder/Parcel.h> #include "Debug.h" @@ -94,7 +95,7 @@ bool RpcAddress::operator<(const RpcAddress& rhs) const { } std::string RpcAddress::toString() const { - return hexString(mRawAddr.get(), sizeof(RpcWireAddress)); + return base::HexString(mRawAddr.get(), sizeof(RpcWireAddress)); } status_t RpcAddress::writeToParcel(Parcel* parcel) const { diff --git a/libs/binder/RpcState.cpp b/libs/binder/RpcState.cpp index f3406bb10b..36c03c5097 100644 --- a/libs/binder/RpcState.cpp +++ b/libs/binder/RpcState.cpp @@ -18,6 +18,7 @@ #include "RpcState.h" +#include <android-base/hex.h> #include <android-base/scopeguard.h> #include <binder/BpBinder.h> #include <binder/IPCThreadState.h> @@ -273,7 +274,7 @@ status_t RpcState::rpcSend(const sp<RpcSession::RpcConnection>& connection, const sp<RpcSession>& session, const char* what, const void* data, size_t size) { LOG_RPC_DETAIL("Sending %s on fd %d: %s", what, connection->fd.get(), - hexString(data, size).c_str()); + android::base::HexString(data, size).c_str()); if (size > std::numeric_limits<ssize_t>::max()) { ALOGE("Cannot send %s at size %zu (too big)", what, size); @@ -311,7 +312,7 @@ status_t RpcState::rpcRec(const sp<RpcSession::RpcConnection>& connection, } LOG_RPC_DETAIL("Received %s on fd %d: %s", what, connection->fd.get(), - hexString(data, size).c_str()); + android::base::HexString(data, size).c_str()); return OK; } diff --git a/libs/binder/tests/binderClearBufTest.cpp b/libs/binder/tests/binderClearBufTest.cpp index 2d30c8da45..307151c7de 100644 --- a/libs/binder/tests/binderClearBufTest.cpp +++ b/libs/binder/tests/binderClearBufTest.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#include <android-base/hex.h> #include <android-base/logging.h> #include <binder/Binder.h> #include <binder/IBinder.h> @@ -30,22 +31,6 @@ using namespace android; const String16 kServerName = String16("binderClearBuf"); -std::string hexString(const void* bytes, size_t len) { - if (bytes == nullptr) return "<null>"; - - const uint8_t* bytes8 = static_cast<const uint8_t*>(bytes); - char chars[] = "0123456789abcdef"; - std::string result; - result.resize(len * 2); - - for (size_t i = 0; i < len; i++) { - result[2 * i] = chars[bytes8[i] >> 4]; - result[2 * i + 1] = chars[bytes8[i] & 0xf]; - } - - return result; -} - class FooBar : public BBinder { public: enum { @@ -83,7 +68,7 @@ class FooBar : public BBinder { lastReply = reply.data(); lastReplySize = reply.dataSize(); } - *outBuffer = hexString(lastReply, lastReplySize); + *outBuffer = android::base::HexString(lastReply, lastReplySize); return result; } }; diff --git a/libs/binder/tests/parcel_fuzzer/Android.bp b/libs/binder/tests/parcel_fuzzer/Android.bp index 74b8eb8d93..acf3f8f1f3 100644 --- a/libs/binder/tests/parcel_fuzzer/Android.bp +++ b/libs/binder/tests/parcel_fuzzer/Android.bp @@ -23,7 +23,6 @@ cc_fuzz { "main.cpp", "random_fd.cpp", "random_parcel.cpp", - "util.cpp", ], static_libs: [ "libbase", diff --git a/libs/binder/tests/parcel_fuzzer/binder.cpp b/libs/binder/tests/parcel_fuzzer/binder.cpp index 5f2c17cdb7..9fe06ddd33 100644 --- a/libs/binder/tests/parcel_fuzzer/binder.cpp +++ b/libs/binder/tests/parcel_fuzzer/binder.cpp @@ -18,11 +18,13 @@ #include "binder.h" #include "util.h" +#include <android-base/hex.h> #include <android/os/IServiceManager.h> #include <binder/ParcelableHolder.h> #include <binder/PersistableBundle.h> using ::android::status_t; +using ::android::base::HexString; enum ByteEnum : int8_t {}; enum IntEnum : int32_t {}; @@ -128,7 +130,7 @@ std::vector<ParcelRead<::android::Parcel>> BINDER_PARCEL_READ_FUNCTIONS { [] (const ::android::Parcel& p, uint8_t len) { FUZZ_LOG() << "about to readInplace"; const void* r = p.readInplace(len); - FUZZ_LOG() << "readInplace done. pointer: " << r << " bytes: " << hexString(r, len); + FUZZ_LOG() << "readInplace done. pointer: " << r << " bytes: " << (r ? HexString(r, len) : "null"); }, PARCEL_READ_OPT_STATUS(int32_t, readInt32), PARCEL_READ_OPT_STATUS(uint32_t, readUint32), @@ -156,7 +158,7 @@ std::vector<ParcelRead<::android::Parcel>> BINDER_PARCEL_READ_FUNCTIONS { FUZZ_LOG() << "about to readString16Inplace"; size_t outLen = 0; const char16_t* str = p.readString16Inplace(&outLen); - FUZZ_LOG() << "readString16Inplace: " << hexString(str, sizeof(char16_t) * outLen) + FUZZ_LOG() << "readString16Inplace: " << HexString(str, sizeof(char16_t) * outLen) << " size: " << outLen; }, PARCEL_READ_WITH_STATUS(android::sp<android::IBinder>, readStrongBinder), diff --git a/libs/binder/tests/parcel_fuzzer/hwbinder.cpp b/libs/binder/tests/parcel_fuzzer/hwbinder.cpp index 35b5ebca6f..ee9840f133 100644 --- a/libs/binder/tests/parcel_fuzzer/hwbinder.cpp +++ b/libs/binder/tests/parcel_fuzzer/hwbinder.cpp @@ -18,10 +18,12 @@ #include "hwbinder.h" #include "util.h" +#include <android-base/hex.h> #include <android-base/logging.h> #include <hwbinder/Parcel.h> using ::android::status_t; +using ::android::base::HexString; // TODO: support scatter-gather types @@ -70,13 +72,13 @@ std::vector<ParcelRead<::android::hardware::Parcel>> HWBINDER_PARCEL_READ_FUNCTI FUZZ_LOG() << "about to read"; std::vector<uint8_t> data (length); status_t status = p.read(data.data(), length); - FUZZ_LOG() << "read status: " << status << " data: " << hexString(data.data(), data.size()); + FUZZ_LOG() << "read status: " << status << " data: " << HexString(data.data(), data.size()); }, [] (const ::android::hardware::Parcel& p, uint8_t length) { FUZZ_LOG() << "about to read"; std::vector<uint8_t> data (length); const void* inplace = p.readInplace(length); - FUZZ_LOG() << "read status: " << hexString(inplace, length); + FUZZ_LOG() << "read status: " << (inplace ? HexString(inplace, length) : "null"); }, PARCEL_READ_WITH_STATUS(int8_t, readInt8), PARCEL_READ_WITH_STATUS(uint8_t, readUint8), @@ -100,7 +102,7 @@ std::vector<ParcelRead<::android::hardware::Parcel>> HWBINDER_PARCEL_READ_FUNCTI FUZZ_LOG() << "about to readString16Inplace"; size_t outSize = 0; const char16_t* str = p.readString16Inplace(&outSize); - FUZZ_LOG() << "readString16Inplace: " << hexString(str, sizeof(char16_t) * outSize); + FUZZ_LOG() << "readString16Inplace: " << HexString(str, sizeof(char16_t) * outSize); }, PARCEL_READ_OPT_STATUS(::android::sp<::android::hardware::IBinder>, readStrongBinder), PARCEL_READ_WITH_STATUS(::android::sp<::android::hardware::IBinder>, readNullableStrongBinder), diff --git a/libs/binder/tests/parcel_fuzzer/main.cpp b/libs/binder/tests/parcel_fuzzer/main.cpp index 2a79e85eca..f435dae659 100644 --- a/libs/binder/tests/parcel_fuzzer/main.cpp +++ b/libs/binder/tests/parcel_fuzzer/main.cpp @@ -22,6 +22,7 @@ #include <iostream> +#include <android-base/hex.h> #include <android-base/logging.h> #include <android/binder_auto_utils.h> #include <android/binder_libbinder.h> @@ -35,6 +36,7 @@ using android::fillRandomParcel; using android::sp; +using android::base::HexString; void fillRandomParcel(::android::hardware::Parcel* p, FuzzedDataProvider&& provider) { // TODO: functionality to create random parcels for libhwbinder parcels @@ -78,8 +80,8 @@ void doReadFuzz(const char* backend, const std::vector<ParcelRead<P>>& reads, CHECK(reads.size() <= 255) << reads.size(); FUZZ_LOG() << "backend: " << backend; - FUZZ_LOG() << "input: " << hexString(p.data(), p.dataSize()); - FUZZ_LOG() << "instructions: " << hexString(instructions); + FUZZ_LOG() << "input: " << HexString(p.data(), p.dataSize()); + FUZZ_LOG() << "instructions: " << HexString(instructions.data(), instructions.size()); for (size_t i = 0; i + 1 < instructions.size(); i += 2) { uint8_t a = instructions[i]; diff --git a/libs/binder/tests/parcel_fuzzer/util.cpp b/libs/binder/tests/parcel_fuzzer/util.cpp deleted file mode 100644 index 479f406d8c..0000000000 --- a/libs/binder/tests/parcel_fuzzer/util.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#define FUZZ_LOG_TAG "util" -#include "util.h" - -#include <android-base/logging.h> - -#include <iomanip> -#include <sstream> - -std::string hexString(const void* bytes, size_t len) { - if (bytes == nullptr) return "<null>"; - - const uint8_t* bytes8 = static_cast<const uint8_t*>(bytes); - char chars[] = "0123456789abcdef"; - std::string result; - result.resize(len * 2); - - for (size_t i = 0; i < len; i++) { - result[2 * i] = chars[bytes8[i] >> 4]; - result[2 * i + 1] = chars[bytes8[i] & 0xf]; - } - - return result; -} -std::string hexString(const std::vector<uint8_t>& bytes) { - return hexString(bytes.data(), bytes.size()); -} diff --git a/libs/binder/tests/parcel_fuzzer/util.h b/libs/binder/tests/parcel_fuzzer/util.h index 45e8c571a8..a5d0dae94d 100644 --- a/libs/binder/tests/parcel_fuzzer/util.h +++ b/libs/binder/tests/parcel_fuzzer/util.h @@ -49,6 +49,3 @@ public: FuzzLog& log() { return *this; } }; #endif - -std::string hexString(const void* bytes, size_t len); -std::string hexString(const std::vector<uint8_t>& bytes); |