diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2019-01-21 17:23:31 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2019-01-21 17:23:31 +0000 |
commit | 5701a47685151f4a9f2417ad79f44e881e5101bb (patch) | |
tree | 6530820782d5d65f6ca4719690817934c7870ebf /libnativeloader/native_loader.cpp | |
parent | 67a09e57915de6ba2562ea4a5e16ee0ad4870e27 (diff) |
Revert "Introduce conscrypt linker namespace."
This reverts commit 67a09e57915de6ba2562ea4a5e16ee0ad4870e27.
Exempt-From-Owner-Approval: Fixes P0 failures.
Bug: 123185917
Reason for revert: media namespace needs to be introduced.
Change-Id: I0c28798a3143c1e627278c3a908207e670171416
Diffstat (limited to 'libnativeloader/native_loader.cpp')
-rw-r--r-- | libnativeloader/native_loader.cpp | 45 |
1 files changed, 1 insertions, 44 deletions
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp index ab17b29d4..0a808ce42 100644 --- a/libnativeloader/native_loader.cpp +++ b/libnativeloader/native_loader.cpp @@ -43,10 +43,6 @@ #include <android-base/properties.h> #endif -extern "C" { -struct android_namespace_t* android_get_exported_namespace(const char*); -} - #define CHECK(predicate) LOG_ALWAYS_FATAL_IF(!(predicate),\ "%s:%d: %s CHECK '" #predicate "' failed.",\ __FILE__, __LINE__, __FUNCTION__) @@ -123,8 +119,6 @@ static constexpr const char* kVendorClassloaderNamespaceName = "vendor-classload // This list includes all directories app is allowed to access this way. static constexpr const char* kWhitelistedDirectories = "/data:/mnt/expand"; -static constexpr const char* kApexPath = "/apex/"; - static bool is_debuggable() { char debuggable[PROP_VALUE_MAX]; property_get("ro.debuggable", debuggable, "0"); @@ -629,51 +623,14 @@ jstring CreateClassLoaderNamespace(JNIEnv* env, return nullptr; } -#if defined(__ANDROID__) -static android_namespace_t* FindExportedNamespace(const char* caller_location) { - std::string location = caller_location; - // Lots of implicit assumptions here: we expect `caller_location` to be of the form: - // /apex/com.android...modulename/... - // - // And we extract from it 'modulename', which is the name of the linker namespace. - if (android::base::StartsWith(location, kApexPath)) { - size_t slash_index = location.find_first_of('/', strlen(kApexPath)); - LOG_ALWAYS_FATAL_IF((slash_index == std::string::npos), - "Error finding namespace of apex: no slash in path %s", caller_location); - size_t dot_index = location.find_last_of('.', slash_index); - LOG_ALWAYS_FATAL_IF((dot_index == std::string::npos), - "Error finding namespace of apex: no dot in apex name %s", caller_location); - std::string name = location.substr(dot_index + 1, slash_index - dot_index - 1); - android_namespace_t* boot_namespace = android_get_exported_namespace(name.c_str()); - LOG_ALWAYS_FATAL_IF((boot_namespace == nullptr), - "Error finding namespace of apex: no namespace called %s", name.c_str()); - return boot_namespace; - } - return nullptr; -} -#endif - void* OpenNativeLibrary(JNIEnv* env, int32_t target_sdk_version, const char* path, jobject class_loader, const char* caller_location, jstring library_path, bool* needs_native_bridge, char** error_msg) { #if defined(__ANDROID__) UNUSED(target_sdk_version); + UNUSED(caller_location); if (class_loader == nullptr) { *needs_native_bridge = false; - if (caller_location != nullptr) { - android_namespace_t* boot_namespace = FindExportedNamespace(caller_location); - if (boot_namespace != nullptr) { - const android_dlextinfo dlextinfo = { - .flags = ANDROID_DLEXT_USE_NAMESPACE, - .library_namespace = boot_namespace, - }; - void* handle = android_dlopen_ext(path, RTLD_NOW, &dlextinfo); - if (handle == nullptr) { - *error_msg = strdup(dlerror()); - } - return handle; - } - } void* handle = dlopen(path, RTLD_NOW); if (handle == nullptr) { *error_msg = strdup(dlerror()); |