summaryrefslogtreecommitdiff
path: root/libnativeloader/native_loader_namespace.cpp
diff options
context:
space:
mode:
authorJiyong Park <jiyong@google.com>2019-05-17 18:48:32 +0900
committerJiyong Park <jiyong@google.com>2019-05-17 18:51:44 +0900
commitd970ccb56e399e916b8a660920df3d873c25facb (patch)
treeae2e7f7695e4bc18880a9d83c4f4e5b02e93d586 /libnativeloader/native_loader_namespace.cpp
parent6efb8e77548ba1e17a7b1bd11b923c74986a4d67 (diff)
Fix nullpointer dereference in libnativeloader
The `char* path` argument of OpenNativeLibrary() can be nullptr. We are constructing std::string from the path, which is a bug. Fixing it by using char* without converting it to std::string. Test: run-gtests.sh JniCompilerTest.CompileAndRunIntMethodThroughStubNormalCompiler is successful. Change-Id: I91249da7c1a72a2dff9bc77e477b465e0c7ee056
Diffstat (limited to 'libnativeloader/native_loader_namespace.cpp')
-rw-r--r--libnativeloader/native_loader_namespace.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/libnativeloader/native_loader_namespace.cpp b/libnativeloader/native_loader_namespace.cpp
index 90f730c9b..58ac6869b 100644
--- a/libnativeloader/native_loader_namespace.cpp
+++ b/libnativeloader/native_loader_namespace.cpp
@@ -115,15 +115,14 @@ bool NativeLoaderNamespace::Link(const NativeLoaderNamespace& target,
}
}
-void* NativeLoaderNamespace::Load(const std::string& lib_name) const {
+void* NativeLoaderNamespace::Load(const char* lib_name) const {
if (!IsBridged()) {
android_dlextinfo extinfo;
extinfo.flags = ANDROID_DLEXT_USE_NAMESPACE;
extinfo.library_namespace = this->ToRawAndroidNamespace();
- return android_dlopen_ext(lib_name.c_str(), RTLD_NOW, &extinfo);
+ return android_dlopen_ext(lib_name, RTLD_NOW, &extinfo);
} else {
- return NativeBridgeLoadLibraryExt(lib_name.c_str(), RTLD_NOW,
- this->ToRawNativeBridgeNamespace());
+ return NativeBridgeLoadLibraryExt(lib_name, RTLD_NOW, this->ToRawNativeBridgeNamespace());
}
}