summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaroslav Yamshchikov <y.yamshchiko@samsung.com>2019-07-18 13:14:14 +0300
committer이형주/Common Platform Lab(SR)/Staff Engineer/삼성전자 <leee.lee@samsung.com>2019-08-13 07:57:25 +0900
commit55078665651add8d6a82920ed3ab629e7b25354c (patch)
tree98a8a5b4a5db5885aeb51886f02657c8178c1e1a
parent99b5e3e045eebe1768669d4991e2dc228b88dd6d (diff)
downloadcoreclr-55078665651add8d6a82920ed3ab629e7b25354c.tar.gz
coreclr-55078665651add8d6a82920ed3ab629e7b25354c.tar.bz2
coreclr-55078665651add8d6a82920ed3ab629e7b25354c.zip
add access(2) call before dlopening files
-rw-r--r--src/pal/src/loader/module.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/pal/src/loader/module.cpp b/src/pal/src/loader/module.cpp
index dc4c8babf0..c817ffe2db 100644
--- a/src/pal/src/loader/module.cpp
+++ b/src/pal/src/loader/module.cpp
@@ -1428,6 +1428,15 @@ static NATIVE_LIBRARY_HANDLE LOADLoadLibraryDirect(LPCSTR libraryNameOrPath)
_ASSERTE(libraryNameOrPath != nullptr);
_ASSERTE(libraryNameOrPath[0] != '\0');
+ if (strchr(libraryNameOrPath, '/') != nullptr)
+ {
+ if (access(libraryNameOrPath, F_OK) == -1)
+ {
+ SetLastError(ERROR_MOD_NOT_FOUND);
+ return (NATIVE_LIBRARY_HANDLE)nullptr;
+ }
+ }
+
NATIVE_LIBRARY_HANDLE dl_handle = dlopen(libraryNameOrPath, RTLD_LAZY);
if (dl_handle == nullptr)
{