From 7f72945eff96bfc278881b8879b3d16f687ddc1c Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Thu, 16 Jan 2020 12:40:43 -0800 Subject: [PATCH] adbd: actually dynamically link against libadbd_auth. libadbd_auth was accidentally linked as a static library, which defeats the entire purpose. Test: treehugger Test: readelf -d $ANDROID_PRODUCT_OUT/apex/com.android.adbd/bin/adbd Change-Id: Id5b66745946a8b92e368ee5f3965275ff03e056d --- adb/Android.bp | 8 ++------ adb/apex/ld.config.txt | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/adb/Android.bp b/adb/Android.bp index 7c5e3ea69..f0cac4b60 100644 --- a/adb/Android.bp +++ b/adb/Android.bp @@ -29,6 +29,7 @@ cc_defaults { "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION=1", ], cpp_std: "experimental", + stl: "libc++_static", use_version_lib: true, compile_multilib: "first", @@ -359,8 +360,6 @@ cc_binary_host { "libz", ], - stl: "libc++_static", - // Don't add anything here, we don't want additional shared dependencies // on the host adb tool, and shared libraries that link against libc++ // will violate ODR @@ -553,11 +552,9 @@ cc_binary { keep_symbols: true, }, - stl: "libc++_static", static_libs: [ "libadbconnection_server", "libadbd", - "libadbd_auth", "libadbd_services", "libasyncio", "libbase", @@ -572,6 +569,7 @@ cc_binary { ], shared_libs: [ + "libadbd_auth", "libcrypto", ], } @@ -580,7 +578,6 @@ phony { name: "adbd_system_binaries", required: [ "abb", - "libadbd_auth", "reboot", "set-verity-state", ] @@ -734,7 +731,6 @@ cc_library_host_static { "libziparchive", "libz", ], - stl: "libc++_static", proto: { type: "lite", export_proto_headers: true, diff --git a/adb/apex/ld.config.txt b/adb/apex/ld.config.txt index d1858a454..ca297fe01 100644 --- a/adb/apex/ld.config.txt +++ b/adb/apex/ld.config.txt @@ -5,16 +5,24 @@ dir.adbd = /apex/com.android.adbd/bin/ [adbd] -additional.namespaces = platform,art +additional.namespaces = apex,platform,art namespace.default.isolated = true -namespace.default.search.paths = /apex/com.android.adbd/${LIB} -namespace.default.asan.search.paths = /apex/com.android.adbd/${LIB} namespace.default.permitted.paths = /system/${LIB} namespace.default.asan.permitted.paths = /system/${LIB} -namespace.default.links = art,platform +namespace.default.links = apex,art,platform +namespace.default.link.apex.shared_libs = libcrypto.so namespace.default.link.art.shared_libs = libadbconnection_server.so -namespace.default.link.platform.shared_libs = libc.so:libdl.so:libm.so:libclang_rt.hwasan-aarch64-android.so + +# libcrypto.so in the APEX might be a symlink to /system, for APEXes bundled with the system image. +# The dynamic linker works off of realpath, so we need to permit loading libcrypto.so from /system. +namespace.default.link.platform.shared_libs = libc.so:libdl.so:libm.so:libclang_rt.hwasan-aarch64-android.so:liblog.so:libadbd_auth.so:libcrypto.so + +namespace.apex.isolated = true +namespace.apex.search.paths = /apex/com.android.adbd/${LIB} +namespace.apex.asan.search.paths = /apex/com.android.adbd/${LIB} +namespace.apex.links = platform +namespace.apex.link.platform.allow_all_shared_libs = true ############################################################################### # "art" APEX namespace: used for libadbdconnection_server