Merge "Revert "Introduce conscrypt linker namespace.""
am: e606e00042
Change-Id: If644c8cb83478ac12f218ac0faa90ebd32686b72
This commit is contained in:
commit
3326da5bb7
3 changed files with 3 additions and 74 deletions
|
|
@ -43,10 +43,6 @@
|
||||||
#include <android-base/properties.h>
|
#include <android-base/properties.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
struct android_namespace_t* android_get_exported_namespace(const char*);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define CHECK(predicate) LOG_ALWAYS_FATAL_IF(!(predicate),\
|
#define CHECK(predicate) LOG_ALWAYS_FATAL_IF(!(predicate),\
|
||||||
"%s:%d: %s CHECK '" #predicate "' failed.",\
|
"%s:%d: %s CHECK '" #predicate "' failed.",\
|
||||||
__FILE__, __LINE__, __FUNCTION__)
|
__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.
|
// This list includes all directories app is allowed to access this way.
|
||||||
static constexpr const char* kWhitelistedDirectories = "/data:/mnt/expand";
|
static constexpr const char* kWhitelistedDirectories = "/data:/mnt/expand";
|
||||||
|
|
||||||
static constexpr const char* kApexPath = "/apex/";
|
|
||||||
|
|
||||||
static bool is_debuggable() {
|
static bool is_debuggable() {
|
||||||
char debuggable[PROP_VALUE_MAX];
|
char debuggable[PROP_VALUE_MAX];
|
||||||
property_get("ro.debuggable", debuggable, "0");
|
property_get("ro.debuggable", debuggable, "0");
|
||||||
|
|
@ -629,51 +623,14 @@ jstring CreateClassLoaderNamespace(JNIEnv* env,
|
||||||
return nullptr;
|
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,
|
void* OpenNativeLibrary(JNIEnv* env, int32_t target_sdk_version, const char* path,
|
||||||
jobject class_loader, const char* caller_location, jstring library_path,
|
jobject class_loader, const char* caller_location, jstring library_path,
|
||||||
bool* needs_native_bridge, char** error_msg) {
|
bool* needs_native_bridge, char** error_msg) {
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
UNUSED(target_sdk_version);
|
UNUSED(target_sdk_version);
|
||||||
|
UNUSED(caller_location);
|
||||||
if (class_loader == nullptr) {
|
if (class_loader == nullptr) {
|
||||||
*needs_native_bridge = false;
|
*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);
|
void* handle = dlopen(path, RTLD_NOW);
|
||||||
if (handle == nullptr) {
|
if (handle == nullptr) {
|
||||||
*error_msg = strdup(dlerror());
|
*error_msg = strdup(dlerror());
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ dir.system = /data/benchmarktest64
|
||||||
dir.postinstall = /postinstall
|
dir.postinstall = /postinstall
|
||||||
|
|
||||||
[system]
|
[system]
|
||||||
additional.namespaces = runtime,conscrypt,sphal,vndk,rs
|
additional.namespaces = runtime,sphal,vndk,rs
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# "default" namespace
|
# "default" namespace
|
||||||
|
|
@ -128,20 +128,6 @@ namespace.runtime.links = default
|
||||||
# when it exists.
|
# when it exists.
|
||||||
namespace.runtime.link.default.allow_all_shared_libs = true
|
namespace.runtime.link.default.allow_all_shared_libs = true
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# "conscrypt" APEX namespace
|
|
||||||
#
|
|
||||||
# This namespace is for libraries within the conscrypt APEX.
|
|
||||||
###############################################################################
|
|
||||||
namespace.conscrypt.isolated = true
|
|
||||||
namespace.conscrypt.visible = true
|
|
||||||
|
|
||||||
namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB}
|
|
||||||
namespace.conscrypt.links = default
|
|
||||||
# TODO(b/119867084): Restrict to Bionic dlopen dependencies and PALette library
|
|
||||||
# when it exists.
|
|
||||||
namespace.conscrypt.link.default.allow_all_shared_libs = true
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# "sphal" namespace
|
# "sphal" namespace
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ dir.system = /data/benchmarktest64
|
||||||
dir.postinstall = /postinstall
|
dir.postinstall = /postinstall
|
||||||
|
|
||||||
[system]
|
[system]
|
||||||
additional.namespaces = runtime,conscrypt,sphal,vndk,rs
|
additional.namespaces = runtime,sphal,vndk,rs
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# "default" namespace
|
# "default" namespace
|
||||||
|
|
@ -75,20 +75,6 @@ namespace.runtime.links = default
|
||||||
# when it exists.
|
# when it exists.
|
||||||
namespace.runtime.link.default.allow_all_shared_libs = true
|
namespace.runtime.link.default.allow_all_shared_libs = true
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# "conscrypt" APEX namespace
|
|
||||||
#
|
|
||||||
# This namespace is for libraries within the conscrypt APEX.
|
|
||||||
###############################################################################
|
|
||||||
namespace.conscrypt.isolated = true
|
|
||||||
namespace.conscrypt.visible = true
|
|
||||||
|
|
||||||
namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB}
|
|
||||||
namespace.conscrypt.links = default
|
|
||||||
# TODO(b/119867084): Restrict to Bionic dlopen dependencies and PALette library
|
|
||||||
# when it exists.
|
|
||||||
namespace.conscrypt.link.default.allow_all_shared_libs = true
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# "sphal" namespace
|
# "sphal" namespace
|
||||||
#
|
#
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue