diff options
-rw-r--r-- | libs/android_runtime_lazy/Android.bp | 5 | ||||
-rw-r--r-- | libs/binder/Android.bp | 8 | ||||
-rw-r--r-- | libs/binder/ndk/Android.bp | 6 | ||||
-rw-r--r-- | libs/binder/ndk/ibinder.cpp | 2 | ||||
-rw-r--r-- | libs/binder/ndk/ibinder_internal.h | 10 | ||||
-rw-r--r-- | libs/binder/ndk/tests/iface.cpp | 12 | ||||
-rw-r--r-- | libs/binder/ndk/tests/include/iface/iface.h | 3 | ||||
-rw-r--r-- | libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp | 20 | ||||
-rw-r--r-- | libs/binder/parcel_fuzzer/Android.bp | 5 | ||||
-rw-r--r-- | libs/binder/rust/Android.bp | 13 | ||||
-rw-r--r-- | libs/binder/tests/fuzzers/Android.bp | 5 | ||||
-rw-r--r-- | libs/binderthreadstate/Android.bp | 5 | ||||
-rw-r--r-- | libs/fakeservicemanager/Android.bp | 5 | ||||
-rw-r--r-- | libs/gralloc/types/Android.bp | 5 | ||||
-rw-r--r-- | libs/gralloc/types/fuzzer/Android.bp | 5 |
15 files changed, 102 insertions, 7 deletions
diff --git a/libs/android_runtime_lazy/Android.bp b/libs/android_runtime_lazy/Android.bp index 09a5f39130..cdd776480c 100644 --- a/libs/android_runtime_lazy/Android.bp +++ b/libs/android_runtime_lazy/Android.bp @@ -35,6 +35,11 @@ cc_library { vendor_available: true, double_loadable: true, host_supported: true, + target: { + darwin: { + enabled: false, + } + }, cflags: [ "-Wall", diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index d363ee9ea4..e6071a06df 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -31,6 +31,11 @@ cc_library_headers { "libutils_headers", ], min_sdk_version: "29", + target: { + darwin: { + enabled: false, + }, + }, } // These interfaces are android-specific implementation unrelated to binder @@ -122,6 +127,9 @@ cc_library { vendor: { exclude_srcs: libbinder_device_interface_sources, }, + darwin: { + enabled: false, + }, }, aidl: { diff --git a/libs/binder/ndk/Android.bp b/libs/binder/ndk/Android.bp index e4d86ae8b9..cecc75904a 100644 --- a/libs/binder/ndk/Android.bp +++ b/libs/binder/ndk/Android.bp @@ -26,6 +26,9 @@ cc_defaults { "-D__ANDROID_API__=10000", ], }, + darwin: { + enabled: false, + }, }, } @@ -84,6 +87,9 @@ cc_library { linux: { version_script: "libbinder_ndk.map.txt", }, + darwin: { + enabled: false, + }, }, stubs: { symbol_file: "libbinder_ndk.map.txt", diff --git a/libs/binder/ndk/ibinder.cpp b/libs/binder/ndk/ibinder.cpp index 2a2eed7879..4610ba9b11 100644 --- a/libs/binder/ndk/ibinder.cpp +++ b/libs/binder/ndk/ibinder.cpp @@ -181,7 +181,7 @@ status_t ABBinder::onTransact(transaction_code_t code, const Parcel& data, Parce binder_status_t status = getClass()->onTransact(this, code, &in, &out); return PruneStatusT(status); - } else if (code == SHELL_COMMAND_TRANSACTION) { + } else if (code == SHELL_COMMAND_TRANSACTION && getClass()->handleShellCommand != nullptr) { int in = data.readFileDescriptor(); int out = data.readFileDescriptor(); int err = data.readFileDescriptor(); diff --git a/libs/binder/ndk/ibinder_internal.h b/libs/binder/ndk/ibinder_internal.h index f60112787d..0fa47c64c7 100644 --- a/libs/binder/ndk/ibinder_internal.h +++ b/libs/binder/ndk/ibinder_internal.h @@ -115,13 +115,13 @@ struct AIBinder_Class { const ::android::String16& getInterfaceDescriptor() const { return mInterfaceDescriptor; } // required to be non-null, implemented for every class - const AIBinder_Class_onCreate onCreate; - const AIBinder_Class_onDestroy onDestroy; - const AIBinder_Class_onTransact onTransact; + const AIBinder_Class_onCreate onCreate = nullptr; + const AIBinder_Class_onDestroy onDestroy = nullptr; + const AIBinder_Class_onTransact onTransact = nullptr; // optional methods for a class - AIBinder_onDump onDump; - AIBinder_handleShellCommand handleShellCommand; + AIBinder_onDump onDump = nullptr; + AIBinder_handleShellCommand handleShellCommand = nullptr; private: // This must be a String16 since BBinder virtual getInterfaceDescriptor returns a reference to diff --git a/libs/binder/ndk/tests/iface.cpp b/libs/binder/ndk/tests/iface.cpp index 64832f3081..a5889856fc 100644 --- a/libs/binder/ndk/tests/iface.cpp +++ b/libs/binder/ndk/tests/iface.cpp @@ -118,7 +118,7 @@ IFoo::~IFoo() { AIBinder_Weak_delete(mWeakBinder); } -binder_status_t IFoo::addService(const char* instance) { +AIBinder* IFoo::getBinder() { AIBinder* binder = nullptr; if (mWeakBinder != nullptr) { @@ -132,8 +132,18 @@ binder_status_t IFoo::addService(const char* instance) { AIBinder_Weak_delete(mWeakBinder); } mWeakBinder = AIBinder_Weak_new(binder); + + // WARNING: it is important that this class does not implement debug or + // shell functions because it does not use special C++ wrapper + // functions, and so this is how we test those functions. } + return binder; +} + +binder_status_t IFoo::addService(const char* instance) { + AIBinder* binder = getBinder(); + binder_status_t status = AServiceManager_addService(binder, instance); // Strong references we care about kept by remote process AIBinder_decStrong(binder); diff --git a/libs/binder/ndk/tests/include/iface/iface.h b/libs/binder/ndk/tests/include/iface/iface.h index cdf5493216..d9dd64b8a6 100644 --- a/libs/binder/ndk/tests/include/iface/iface.h +++ b/libs/binder/ndk/tests/include/iface/iface.h @@ -30,6 +30,9 @@ class IFoo : public virtual ::android::RefBase { static AIBinder_Class* kClass; + // binder representing this interface with one reference count + AIBinder* getBinder(); + // Takes ownership of IFoo binder_status_t addService(const char* instance); static ::android::sp<IFoo> getService(const char* instance, AIBinder** outBinder = nullptr); diff --git a/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp b/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp index 44d8ebf048..160b9f2d73 100644 --- a/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp +++ b/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp @@ -185,6 +185,26 @@ TEST(NdkBinder, CheckServiceThatDoesExist) { AIBinder_decStrong(binder); } +TEST(NdkBinder, UnimplementedDump) { + sp<IFoo> foo = IFoo::getService(IFoo::kSomeInstanceName); + ASSERT_NE(foo, nullptr); + AIBinder* binder = foo->getBinder(); + EXPECT_EQ(OK, AIBinder_dump(binder, STDOUT_FILENO, nullptr, 0)); + AIBinder_decStrong(binder); +} + +TEST(NdkBinder, UnimplementedShell) { + // libbinder_ndk doesn't support calling shell, so we are calling from the + // libbinder across processes to the NDK service which doesn't implement + // shell + static const sp<android::IServiceManager> sm(android::defaultServiceManager()); + sp<IBinder> testService = sm->getService(String16(IFoo::kSomeInstanceName)); + + Vector<String16> argsVec; + EXPECT_EQ(OK, IBinder::shellCommand(testService, STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO, + argsVec, nullptr, nullptr)); +} + TEST(NdkBinder, DoubleNumber) { sp<IFoo> foo = IFoo::getService(IFoo::kSomeInstanceName); ASSERT_NE(foo, nullptr); diff --git a/libs/binder/parcel_fuzzer/Android.bp b/libs/binder/parcel_fuzzer/Android.bp index c5b3d8049b..3e6fe99541 100644 --- a/libs/binder/parcel_fuzzer/Android.bp +++ b/libs/binder/parcel_fuzzer/Android.bp @@ -52,6 +52,11 @@ cc_fuzz { cc_library_static { name: "libbinder_random_parcel", host_supported: true, + target: { + darwin: { + enabled: false, + } + }, srcs: [ "random_fd.cpp", "random_parcel.cpp", diff --git a/libs/binder/rust/Android.bp b/libs/binder/rust/Android.bp index dc8270eeeb..fd5f2f5d9c 100644 --- a/libs/binder/rust/Android.bp +++ b/libs/binder/rust/Android.bp @@ -10,6 +10,11 @@ rust_library { "libbinder_ndk_sys", ], host_supported: true, + target: { + darwin: { + enabled: false, + } + } } rust_library { @@ -23,6 +28,11 @@ rust_library { "libbinder_ndk", ], host_supported: true, + target: { + darwin: { + enabled: false, + } + } } rust_bindgen { @@ -64,6 +74,9 @@ rust_bindgen { "-D__ANDROID_API__=10000", ], }, + darwin: { + enabled: false, + }, }, } diff --git a/libs/binder/tests/fuzzers/Android.bp b/libs/binder/tests/fuzzers/Android.bp index 46379fc629..c465bed250 100644 --- a/libs/binder/tests/fuzzers/Android.bp +++ b/libs/binder/tests/fuzzers/Android.bp @@ -26,6 +26,11 @@ cc_defaults { "libutils", "libbase", ], + target: { + darwin: { + enabled: false, + } + } } cc_fuzz { diff --git a/libs/binderthreadstate/Android.bp b/libs/binderthreadstate/Android.bp index 88752ee87e..08c62df072 100644 --- a/libs/binderthreadstate/Android.bp +++ b/libs/binderthreadstate/Android.bp @@ -19,6 +19,11 @@ cc_library_static { double_loadable: true, vendor_available: true, host_supported: true, + target: { + darwin: { + enabled: false, + } + }, shared_libs: [ "libbinder", diff --git a/libs/fakeservicemanager/Android.bp b/libs/fakeservicemanager/Android.bp index 69096373fd..76518c1286 100644 --- a/libs/fakeservicemanager/Android.bp +++ b/libs/fakeservicemanager/Android.bp @@ -9,6 +9,11 @@ cc_defaults { "libbinder", "libutils", ], + target: { + darwin: { + enabled: false, + }, + }, } cc_library { diff --git a/libs/gralloc/types/Android.bp b/libs/gralloc/types/Android.bp index cc31cd5f24..243d7f119b 100644 --- a/libs/gralloc/types/Android.bp +++ b/libs/gralloc/types/Android.bp @@ -21,6 +21,11 @@ cc_library { "-Wno-enum-compare", ], host_supported: true, + target: { + darwin: { + enabled: false, + } + }, vendor_available: true, vndk: { diff --git a/libs/gralloc/types/fuzzer/Android.bp b/libs/gralloc/types/fuzzer/Android.bp index 84448839a1..8933dc323f 100644 --- a/libs/gralloc/types/fuzzer/Android.bp +++ b/libs/gralloc/types/fuzzer/Android.bp @@ -2,6 +2,11 @@ cc_fuzz { name: "libgralloctypes_fuzzer", defaults: ["libbinder_ndk_host_user"], host_supported: true, + target: { + darwin: { + enabled: false, + } + }, fuzz_config: { cc: ["marissaw@google.com"], |