Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 213676b8 authored by Dimitry Ivanov's avatar Dimitry Ivanov
Browse files

Enable namespaces for all target sdk versions

We previously relied on the fact that target sdk version 0
implies system_server, which is not true, target sdk version
may be set to 0 for other apps and it means 1 - the earliest
version of android. This change enables namespaces for
apps targeting all sdk version and for system_server.

Bug: http://b/27702070
Change-Id: I16fbdeb6868c7035aec71132c80c150c08ea2cc3
parent d61bfb9a
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -159,10 +159,6 @@ class LibraryNamespaces {

static std::mutex g_namespaces_mutex;
static LibraryNamespaces* g_namespaces = new LibraryNamespaces;

static bool namespaces_enabled(uint32_t target_sdk_version) {
  return target_sdk_version > 0;
}
#endif

void InitializeNativeLoader() {
@@ -180,10 +176,7 @@ jstring CreateClassLoaderNamespace(JNIEnv* env,
                                   jstring library_path,
                                   jstring permitted_path) {
#if defined(__ANDROID__)
  if (!namespaces_enabled(target_sdk_version)) {
    return nullptr;
  }

  UNUSED(target_sdk_version);
  std::lock_guard<std::mutex> guard(g_namespaces_mutex);
  android_namespace_t* ns = g_namespaces->Create(env,
                                                 class_loader,
@@ -206,7 +199,8 @@ void* OpenNativeLibrary(JNIEnv* env,
                        jobject class_loader,
                        jstring library_path) {
#if defined(__ANDROID__)
  if (!namespaces_enabled(target_sdk_version) || class_loader == nullptr) {
  UNUSED(target_sdk_version);
  if (class_loader == nullptr) {
    return dlopen(path, RTLD_NOW);
  }