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

Commit 5539db0b 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
(cherry picked from commit 213676b8)
parent f92838ca
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -172,10 +172,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() {
@@ -193,10 +189,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,
@@ -220,7 +213,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);
  }