diff options
author | Jiyong Park <jiyong@google.com> | 2019-05-17 18:48:32 +0900 |
---|---|---|
committer | Jiyong Park <jiyong@google.com> | 2019-05-17 18:51:44 +0900 |
commit | d970ccb56e399e916b8a660920df3d873c25facb (patch) | |
tree | ae2e7f7695e4bc18880a9d83c4f4e5b02e93d586 /libnativeloader/native_loader_namespace.cpp | |
parent | 6efb8e77548ba1e17a7b1bd11b923c74986a4d67 (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.cpp | 7 |
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()); } } |