Skip to content

Commit 576662a

Browse files
author
Steven Moreland
committed
libbinder: allow libbinder_ndk + libbinder.vendor
Due to messed up fuzzing linker namespaces, which are being fixed, when fuzzers are configured as: - vendor: true, - shared_libs: [... "libbinder_ndk" ...], then the runtime libraries used are like this: - /data/fuzz/x86_64/lib/vendor/libbinder.so - /system/lib64/libbinder_ndk.so This is not a correct configuration. However, we can change the way openDeclaredPassthroughHal is disabled in order to provide the same ELF-level interface (that libbinder_ndk expects) from libbinder as libbinder.vendor. Future considertions: - very soon, we need to remove this implicit requirement on the dependencies of ll-ndk libraries, by fixing fuzzer linker namespaces - vendors should be able to dlopen same-process stable C HALs, as system can, but this requires additional apexd APIs available to vendor Bugs: me Test: run all service fuzzers, no startup crashes Change-Id: Icf09de3ca048b542d7c22e6f4ca030977be3dff4
1 parent e2f79ab commit 576662a

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

libs/binder/IServiceManager.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,11 @@ bool checkPermission(const String16& permission, pid_t pid, uid_t uid, bool logP
247247
}
248248
}
249249

250+
#endif //__ANDROID_VNDK__
251+
250252
void* openDeclaredPassthroughHal(const String16& interface, const String16& instance, int flag) {
251-
#if defined(__ANDROID__) && !defined(__ANDROID_RECOVERY__) && !defined(__ANDROID_NATIVE_BRIDGE__)
253+
#if defined(__ANDROID__) && !defined(__ANDROID_VENDOR__) && !defined(__ANDROID_RECOVERY__) && \
254+
!defined(__ANDROID_NATIVE_BRIDGE__)
252255
sp<IServiceManager> sm = defaultServiceManager();
253256
String16 name = interface + String16("/") + instance;
254257
if (!sm->isDeclared(name)) {
@@ -268,8 +271,6 @@ void* openDeclaredPassthroughHal(const String16& interface, const String16& inst
268271
#endif
269272
}
270273

271-
#endif //__ANDROID_VNDK__
272-
273274
// ----------------------------------------------------------------------
274275

275276
ServiceManagerShim::ServiceManagerShim(const sp<AidlServiceManager>& impl) {

0 commit comments

Comments
 (0)