summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaroslav Yamshchikov <y.yamshchiko@samsung.com>2019-07-18 13:14:14 +0300
committerKonstantin Baladurin <k.baladurin@samsung.com>2019-09-26 00:24:34 +0300
commit1a40f520978dc857fc54cc2b4e03b1b4ccb6ae82 (patch)
treee30699c584d863bdfa517f4855285a49b88aab37
parent04a84fd4a6375ab6e4e80912a9c66de0e518c9b8 (diff)
downloadcoreclr-1a40f520978dc857fc54cc2b4e03b1b4ccb6ae82.tar.gz
coreclr-1a40f520978dc857fc54cc2b4e03b1b4ccb6ae82.tar.bz2
coreclr-1a40f520978dc857fc54cc2b4e03b1b4ccb6ae82.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)
{