diff options
-rw-r--r-- | cmds/installd/tests/installd_dexopt_test.cpp | 5 | ||||
-rw-r--r-- | libs/binder/include/binder/RpcSession.h | 4 | ||||
-rw-r--r-- | libs/binder/tests/binderRpcWireProtocolTest.cpp | 5 | ||||
-rw-r--r-- | libs/binder/tests/parcel_fuzzer/Android.bp | 1 | ||||
-rw-r--r-- | libs/gralloc/types/Gralloc4.cpp | 123 |
5 files changed, 45 insertions, 93 deletions
diff --git a/cmds/installd/tests/installd_dexopt_test.cpp b/cmds/installd/tests/installd_dexopt_test.cpp index aeba451a48..800e141d92 100644 --- a/cmds/installd/tests/installd_dexopt_test.cpp +++ b/cmds/installd/tests/installd_dexopt_test.cpp @@ -879,6 +879,11 @@ TEST_F(DexoptTest, ResolveStartupConstStrings) { TEST_F(DexoptTest, DexoptDex2oat64Enabled) { LOG(INFO) << "DexoptDex2oat64Enabled"; + std::string zygote_prop = android::base::GetProperty("ro.zygote", ""); + ASSERT_GT(zygote_prop.size(), 0); + if (zygote_prop != "zygote32_64" && zygote_prop != "zygote64_32") { + GTEST_SKIP() << "DexoptDex2oat64Enabled skipped for single-bitness Zygote."; + } const std::string property = "dalvik.vm.dex2oat64.enabled"; const std::string previous_value = android::base::GetProperty(property, ""); auto restore_property = android::base::make_scope_guard([=]() { diff --git a/libs/binder/include/binder/RpcSession.h b/libs/binder/include/binder/RpcSession.h index 1bc84641f2..a5794428de 100644 --- a/libs/binder/include/binder/RpcSession.h +++ b/libs/binder/include/binder/RpcSession.h @@ -35,9 +35,9 @@ class RpcState; class RpcTransport; class FdTrigger; -constexpr uint32_t RPC_WIRE_PROTOCOL_VERSION_NEXT = 0; +constexpr uint32_t RPC_WIRE_PROTOCOL_VERSION_NEXT = 1; constexpr uint32_t RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL = 0xF0000000; -constexpr uint32_t RPC_WIRE_PROTOCOL_VERSION = RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL; +constexpr uint32_t RPC_WIRE_PROTOCOL_VERSION = 0; /** * This represents a session (group of connections) between a client diff --git a/libs/binder/tests/binderRpcWireProtocolTest.cpp b/libs/binder/tests/binderRpcWireProtocolTest.cpp index a807afa926..4fcf42d6e5 100644 --- a/libs/binder/tests/binderRpcWireProtocolTest.cpp +++ b/libs/binder/tests/binderRpcWireProtocolTest.cpp @@ -237,8 +237,9 @@ TEST(RpcWire, CurrentVersion) { checkRepr(kCurrentRepr, RPC_WIRE_PROTOCOL_VERSION); } -static_assert(RPC_WIRE_PROTOCOL_VERSION == RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL, - "you better update this test!"); +static_assert(RPC_WIRE_PROTOCOL_VERSION == 0, + "If the binder wire protocol is updated, this test should test additional versions. " + "The binder wire protocol should only be updated on upstream AOSP."); TEST(RpcWire, ReleaseBranchHasFrozenRpcWireProtocol) { if (RPC_WIRE_PROTOCOL_VERSION == RPC_WIRE_PROTOCOL_VERSION_EXPERIMENTAL) { diff --git a/libs/binder/tests/parcel_fuzzer/Android.bp b/libs/binder/tests/parcel_fuzzer/Android.bp index e5d32da4cc..2ca6ebdbd2 100644 --- a/libs/binder/tests/parcel_fuzzer/Android.bp +++ b/libs/binder/tests/parcel_fuzzer/Android.bp @@ -59,6 +59,7 @@ cc_fuzz { cc_library_static { name: "libbinder_random_parcel", host_supported: true, + vendor_available: true, target: { darwin: { enabled: false, diff --git a/libs/gralloc/types/Gralloc4.cpp b/libs/gralloc/types/Gralloc4.cpp index 81a529df7e..e2f072a7ab 100644 --- a/libs/gralloc/types/Gralloc4.cpp +++ b/libs/gralloc/types/Gralloc4.cpp @@ -196,35 +196,6 @@ status_t encodeMetadataType(const MetadataType& input, OutputHidlVec* output); status_t validateMetadataType(InputHidlVec* input, const MetadataType& expectedMetadataType); /** - * Private helper functions - */ -template <class T> -status_t encodeInteger(const T& input, OutputHidlVec* output) { - static_assert(std::is_same<T, uint32_t>::value || std::is_same<T, int32_t>::value || - std::is_same<T, uint64_t>::value || std::is_same<T, int64_t>::value || - std::is_same<T, float>::value || std::is_same<T, double>::value); - if (!output) { - return BAD_VALUE; - } - - const uint8_t* tmp = reinterpret_cast<const uint8_t*>(&input); - return output->encode(tmp, sizeof(input)); -} - -template <class T> -status_t decodeInteger(InputHidlVec* input, T* output) { - static_assert(std::is_same<T, uint32_t>::value || std::is_same<T, int32_t>::value || - std::is_same<T, uint64_t>::value || std::is_same<T, int64_t>::value || - std::is_same<T, float>::value || std::is_same<T, double>::value); - if (!output) { - return BAD_VALUE; - } - - uint8_t* tmp = reinterpret_cast<uint8_t*>(output); - return input->decode(tmp, sizeof(*output)); -} - -/** * encode/encodeMetadata are the main encoding functions. They take in T and uses the encodeHelper * function to turn T into the hidl_vec byte stream. * @@ -280,45 +251,10 @@ status_t encodeMetadata(const MetadataType& metadataType, const T& input, hidl_v template <class T> status_t encodeOptionalMetadata(const MetadataType& metadataType, const std::optional<T>& input, hidl_vec<uint8_t>* output, EncodeHelper<T> encodeHelper) { - OutputHidlVec outputHidlVec{output}; - - status_t err = encodeMetadataType(metadataType, &outputHidlVec); - if (err) { - return err; - } - - err = encodeInteger<uint32_t>(input.has_value() ? 1 : 0, &outputHidlVec); - if (err) { - return err; - } - - if (input) { - err = encodeHelper(*input, &outputHidlVec); - if (err) { - return err; - } - } - - err = outputHidlVec.resize(); - if (err) { - return err; - } - - err = encodeMetadataType(metadataType, &outputHidlVec); - if (err) { - return err; - } - - err = encodeInteger<uint32_t>(input.has_value() ? 1 : 0, &outputHidlVec); - if (err) { - return err; - } - - if (input) { - return encodeHelper(*input, &outputHidlVec); + if (!input) { + return NO_ERROR; } - - return NO_ERROR; + return encodeMetadata(metadataType, *input, output, encodeHelper); } /** @@ -379,36 +315,45 @@ status_t decodeOptionalMetadata(const MetadataType& metadataType, const hidl_vec if (!output) { return BAD_VALUE; } - - InputHidlVec inputHidlVec{&input}; - - status_t err = validateMetadataType(&inputHidlVec, metadataType); - if (err) { - return err; + if (input.size() <= 0) { + output->reset(); + return NO_ERROR; } - - uint32_t present = 0; - err = decodeInteger<uint32_t>(&inputHidlVec, &present); - if (err) { - return err; + T tmp; + status_t err = decodeMetadata(metadataType, input, &tmp, decodeHelper); + if (!err) { + *output = tmp; } + return err; +} - if (present) { - T tmp; - err = decodeHelper(&inputHidlVec, &tmp); - if (err) { - return err; - } - - *output = tmp; +/** + * Private helper functions + */ +template <class T> +status_t encodeInteger(const T& input, OutputHidlVec* output) { + static_assert(std::is_same<T, uint32_t>::value || std::is_same<T, int32_t>::value || + std::is_same<T, uint64_t>::value || std::is_same<T, int64_t>::value || + std::is_same<T, float>::value || std::is_same<T, double>::value); + if (!output) { + return BAD_VALUE; } - err = inputHidlVec.hasRemainingData(); - if (err) { + const uint8_t* tmp = reinterpret_cast<const uint8_t*>(&input); + return output->encode(tmp, sizeof(input)); +} + +template <class T> +status_t decodeInteger(InputHidlVec* input, T* output) { + static_assert(std::is_same<T, uint32_t>::value || std::is_same<T, int32_t>::value || + std::is_same<T, uint64_t>::value || std::is_same<T, int64_t>::value || + std::is_same<T, float>::value || std::is_same<T, double>::value); + if (!output) { return BAD_VALUE; } - return NO_ERROR; + uint8_t* tmp = reinterpret_cast<uint8_t*>(output); + return input->decode(tmp, sizeof(*output)); } status_t encodeString(const std::string& input, OutputHidlVec* output) { |