diff options
| -rw-r--r-- | Android.bp | 3 | ||||
| -rw-r--r-- | libs/binder/ndk/include_cpp/android/binder_to_string.h | 8 | ||||
| -rw-r--r-- | libs/binder/rust/tests/parcel_fuzzer/read_utils.rs | 6 | ||||
| -rw-r--r-- | libs/binder/tests/parcel_fuzzer/Android.bp | 9 | ||||
| -rw-r--r-- | libs/binder/tests/parcel_fuzzer/binder.cpp | 12 | ||||
| -rw-r--r-- | libs/binder/tests/parcel_fuzzer/binder_ndk.cpp | 12 | ||||
| -rw-r--r-- | libs/binder/tests/parcel_fuzzer/parcelables/EmptyParcelable.aidl (renamed from libs/binder/tests/parcel_fuzzer/EmptyParcelable.aidl) | 4 | ||||
| -rw-r--r-- | libs/binder/tests/parcel_fuzzer/parcelables/GenericDataParcelable.aidl (renamed from libs/binder/tests/parcel_fuzzer/GenericDataParcelable.aidl) | 1 | ||||
| -rw-r--r-- | libs/binder/tests/parcel_fuzzer/parcelables/SingleDataParcelable.aidl (renamed from libs/binder/tests/parcel_fuzzer/SingleDataParcelable.aidl) | 1 | ||||
| -rw-r--r-- | libs/binder/tests/parcel_fuzzer/random_parcel.cpp | 5 | ||||
| -rw-r--r-- | libs/binder/trusty/include/log/log.h | 8 | ||||
| -rw-r--r-- | services/sensorservice/aidl/utils.cpp | 2 | ||||
| -rw-r--r-- | services/sensorservice/hidl/utils.cpp | 4 |
13 files changed, 44 insertions, 31 deletions
diff --git a/Android.bp b/Android.bp index 615a7a8727..3992f82c3d 100644 --- a/Android.bp +++ b/Android.bp @@ -56,7 +56,8 @@ subdirs = [ cc_library_headers { name: "libandroid_sensor_headers", - vendor: true, + vendor_available: true, + host_supported: true, export_include_dirs: ["include_sensor"], } diff --git a/libs/binder/ndk/include_cpp/android/binder_to_string.h b/libs/binder/ndk/include_cpp/android/binder_to_string.h index 6a25db220f..2a00736bc3 100644 --- a/libs/binder/ndk/include_cpp/android/binder_to_string.h +++ b/libs/binder/ndk/include_cpp/android/binder_to_string.h @@ -160,7 +160,7 @@ class ToEmptyString { template <typename _T> std::string ToString(const _T& t) { if constexpr (details::ToEmptyString<_T>::value) { - return ""; + return "<unimplemented>"; } else if constexpr (std::is_same_v<bool, _T>) { return t ? "true" : "false"; } else if constexpr (std::is_same_v<char16_t, _T>) { @@ -176,9 +176,11 @@ std::string ToString(const _T& t) { return t; #ifdef HAS_NDK_INTERFACE } else if constexpr (std::is_same_v<::ndk::SpAIBinder, _T>) { - return (t.get() == nullptr) ? "(null)" : ""; + std::stringstream ss; + ss << "binder:" << std::hex << t.get(); + return ss.str(); } else if constexpr (std::is_same_v<::ndk::ScopedFileDescriptor, _T>) { - return (t.get() == -1) ? "(null)" : ""; + return "fd:" + std::to_string(t.get()); #endif #ifdef HAS_STRING16 } else if constexpr (std::is_same_v<String16, _T>) { diff --git a/libs/binder/rust/tests/parcel_fuzzer/read_utils.rs b/libs/binder/rust/tests/parcel_fuzzer/read_utils.rs index d2bfde1022..a2d48b6115 100644 --- a/libs/binder/rust/tests/parcel_fuzzer/read_utils.rs +++ b/libs/binder/rust/tests/parcel_fuzzer/read_utils.rs @@ -16,9 +16,9 @@ use binder::binder_impl::BorrowedParcel; use binder::{ParcelFileDescriptor, Parcelable, SpIBinder}; -use binderReadParcelIface::aidl::EmptyParcelable::EmptyParcelable; -use binderReadParcelIface::aidl::GenericDataParcelable::GenericDataParcelable; -use binderReadParcelIface::aidl::SingleDataParcelable::SingleDataParcelable; +use binderReadParcelIface::aidl::parcelables::EmptyParcelable::EmptyParcelable; +use binderReadParcelIface::aidl::parcelables::GenericDataParcelable::GenericDataParcelable; +use binderReadParcelIface::aidl::parcelables::SingleDataParcelable::SingleDataParcelable; macro_rules! read_parcel_interface { ($data_type:ty) => { diff --git a/libs/binder/tests/parcel_fuzzer/Android.bp b/libs/binder/tests/parcel_fuzzer/Android.bp index 61a24127d6..35866adf20 100644 --- a/libs/binder/tests/parcel_fuzzer/Android.bp +++ b/libs/binder/tests/parcel_fuzzer/Android.bp @@ -12,13 +12,14 @@ aidl_interface { host_supported: true, unstable: true, srcs: [ - "EmptyParcelable.aidl", - "SingleDataParcelable.aidl", - "GenericDataParcelable.aidl", + "parcelables/EmptyParcelable.aidl", + "parcelables/SingleDataParcelable.aidl", + "parcelables/GenericDataParcelable.aidl", ], backend: { java: { - enabled: false, + enabled: true, + platform_apis: true, }, rust: { enabled: true, diff --git a/libs/binder/tests/parcel_fuzzer/binder.cpp b/libs/binder/tests/parcel_fuzzer/binder.cpp index 9dac2c98a7..768fbe118d 100644 --- a/libs/binder/tests/parcel_fuzzer/binder.cpp +++ b/libs/binder/tests/parcel_fuzzer/binder.cpp @@ -16,9 +16,9 @@ #define FUZZ_LOG_TAG "binder" #include "binder.h" -#include "EmptyParcelable.h" -#include "GenericDataParcelable.h" -#include "SingleDataParcelable.h" +#include "parcelables/EmptyParcelable.h" +#include "parcelables/GenericDataParcelable.h" +#include "parcelables/SingleDataParcelable.h" #include "util.h" #include <android-base/hex.h> @@ -359,19 +359,19 @@ std::vector<ParcelRead<::android::Parcel>> BINDER_PARCEL_READ_FUNCTIONS { }, [] (const ::android::Parcel& p, FuzzedDataProvider& /*provider*/) { FUZZ_LOG() << "about to call readFromParcel() with status for EmptyParcelable"; - EmptyParcelable emptyParcelable{}; + parcelables::EmptyParcelable emptyParcelable{}; status_t status = emptyParcelable.readFromParcel(&p); FUZZ_LOG() << " status: " << status; }, [] (const ::android::Parcel& p , FuzzedDataProvider& /*provider*/) { FUZZ_LOG() << "about to call readFromParcel() with status for SingleDataParcelable"; - SingleDataParcelable singleDataParcelable; + parcelables::SingleDataParcelable singleDataParcelable; status_t status = singleDataParcelable.readFromParcel(&p); FUZZ_LOG() <<" status: " << status; }, [] (const ::android::Parcel& p, FuzzedDataProvider& /*provider*/) { FUZZ_LOG() << "about to call readFromParcel() with status for GenericDataParcelable"; - GenericDataParcelable genericDataParcelable; + parcelables::GenericDataParcelable genericDataParcelable; status_t status = genericDataParcelable.readFromParcel(&p); FUZZ_LOG() <<" status: " << status; }, diff --git a/libs/binder/tests/parcel_fuzzer/binder_ndk.cpp b/libs/binder/tests/parcel_fuzzer/binder_ndk.cpp index af773a02f7..53e7de4350 100644 --- a/libs/binder/tests/parcel_fuzzer/binder_ndk.cpp +++ b/libs/binder/tests/parcel_fuzzer/binder_ndk.cpp @@ -16,9 +16,9 @@ #define FUZZ_LOG_TAG "binder_ndk" #include "binder_ndk.h" -#include "aidl/EmptyParcelable.h" -#include "aidl/GenericDataParcelable.h" -#include "aidl/SingleDataParcelable.h" +#include "aidl/parcelables/EmptyParcelable.h" +#include "aidl/parcelables/GenericDataParcelable.h" +#include "aidl/parcelables/SingleDataParcelable.h" #include <android/binder_parcel_utils.h> #include <android/binder_parcelable_utils.h> @@ -183,19 +183,19 @@ std::vector<ParcelRead<NdkParcelAdapter>> BINDER_NDK_PARCEL_READ_FUNCTIONS{ [](const NdkParcelAdapter& p, FuzzedDataProvider& /*provider*/) { FUZZ_LOG() << "about to read parcel using readFromParcel for EmptyParcelable"; - aidl::EmptyParcelable emptyParcelable; + aidl::parcelables::EmptyParcelable emptyParcelable; binder_status_t status = emptyParcelable.readFromParcel(p.aParcel()); FUZZ_LOG() << "status: " << status; }, [](const NdkParcelAdapter& p, FuzzedDataProvider& /*provider*/) { FUZZ_LOG() << "about to read parcel using readFromParcel for SingleDataParcelable"; - aidl::SingleDataParcelable singleDataParcelable; + aidl::parcelables::SingleDataParcelable singleDataParcelable; binder_status_t status = singleDataParcelable.readFromParcel(p.aParcel()); FUZZ_LOG() << "status: " << status; }, [](const NdkParcelAdapter& p, FuzzedDataProvider& /*provider*/) { FUZZ_LOG() << "about to read parcel using readFromParcel for GenericDataParcelable"; - aidl::GenericDataParcelable genericDataParcelable; + aidl::parcelables::GenericDataParcelable genericDataParcelable; binder_status_t status = genericDataParcelable.readFromParcel(p.aParcel()); FUZZ_LOG() << "status: " << status; }, diff --git a/libs/binder/tests/parcel_fuzzer/EmptyParcelable.aidl b/libs/binder/tests/parcel_fuzzer/parcelables/EmptyParcelable.aidl index 96d6223d3d..1216250cd9 100644 --- a/libs/binder/tests/parcel_fuzzer/EmptyParcelable.aidl +++ b/libs/binder/tests/parcel_fuzzer/parcelables/EmptyParcelable.aidl @@ -13,6 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -parcelable EmptyParcelable{ +package parcelables; +parcelable EmptyParcelable { }
\ No newline at end of file diff --git a/libs/binder/tests/parcel_fuzzer/GenericDataParcelable.aidl b/libs/binder/tests/parcel_fuzzer/parcelables/GenericDataParcelable.aidl index fc2542b36c..f1079e9047 100644 --- a/libs/binder/tests/parcel_fuzzer/GenericDataParcelable.aidl +++ b/libs/binder/tests/parcel_fuzzer/parcelables/GenericDataParcelable.aidl @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package parcelables; parcelable GenericDataParcelable { int data; diff --git a/libs/binder/tests/parcel_fuzzer/SingleDataParcelable.aidl b/libs/binder/tests/parcel_fuzzer/parcelables/SingleDataParcelable.aidl index d62891b26a..0187168d89 100644 --- a/libs/binder/tests/parcel_fuzzer/SingleDataParcelable.aidl +++ b/libs/binder/tests/parcel_fuzzer/parcelables/SingleDataParcelable.aidl @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package parcelables; parcelable SingleDataParcelable{ int data; diff --git a/libs/binder/tests/parcel_fuzzer/random_parcel.cpp b/libs/binder/tests/parcel_fuzzer/random_parcel.cpp index edc695f81a..f0beed234b 100644 --- a/libs/binder/tests/parcel_fuzzer/random_parcel.cpp +++ b/libs/binder/tests/parcel_fuzzer/random_parcel.cpp @@ -73,6 +73,11 @@ void fillRandomParcel(Parcel* p, FuzzedDataProvider&& provider, RandomParcelOpti 1)); CHECK(OK == p->writeFileDescriptor(fd.get(), false /*takeOwnership*/)); } else { + // b/260119717 - Adding more FDs can eventually lead to FD limit exhaustion + if (options->extraFds.size() > 1000) { + return; + } + std::vector<base::unique_fd> fds = getRandomFds(&provider); CHECK(OK == p->writeFileDescriptor(fds.begin()->release(), diff --git a/libs/binder/trusty/include/log/log.h b/libs/binder/trusty/include/log/log.h index d88d18a7be..de84617343 100644 --- a/libs/binder/trusty/include/log/log.h +++ b/libs/binder/trusty/include/log/log.h @@ -121,6 +121,8 @@ static inline void __ignore_va_args__(...) {} TLOGE("android_errorWriteLog: tag:%x subTag:%s\n", tag, subTag); \ } while (0) -extern "C" inline void __assert(const char* file, int line, const char* str) { - LOG_ALWAYS_FATAL("%s:%d: assertion \"%s\" failed", file, line, str); -} +// Override the definition of __assert from binder_status.h +#ifndef __BIONIC__ +#undef __assert +#define __assert(file, line, str) LOG_ALWAYS_FATAL("%s:%d: %s", file, line, str) +#endif // __BIONIC__ diff --git a/services/sensorservice/aidl/utils.cpp b/services/sensorservice/aidl/utils.cpp index 26bcdc5b24..beb38b9f55 100644 --- a/services/sensorservice/aidl/utils.cpp +++ b/services/sensorservice/aidl/utils.cpp @@ -58,7 +58,7 @@ ndk::ScopedAStatus convertResult(status_t src) { ::aidl::android::hardware::sensors::Event convertEvent(const ::ASensorEvent& src) { ::aidl::android::hardware::sensors::Event dst; ::android::hardware::sensors::implementation:: - convertFromSensorEvent(reinterpret_cast<const sensors_event_t&>(src), &dst); + convertFromASensorEvent(src, &dst); return dst; } diff --git a/services/sensorservice/hidl/utils.cpp b/services/sensorservice/hidl/utils.cpp index 2f9e922b59..5fa594d01d 100644 --- a/services/sensorservice/hidl/utils.cpp +++ b/services/sensorservice/hidl/utils.cpp @@ -76,8 +76,8 @@ Result convertResult(status_t status) { ::android::hardware::sensors::V1_0::Event convertEvent(const ::ASensorEvent& src) { ::android::hardware::sensors::V1_0::Event dst; - ::android::hardware::sensors::V1_0::implementation::convertFromSensorEvent( - reinterpret_cast<const sensors_event_t&>(src), &dst); + ::android::hardware::sensors::V1_0::implementation::convertFromASensorEvent( + src, &dst); return dst; } |