diff options
author | Yaroslav Yamshchikov <y.yamshchiko@samsung.com> | 2019-07-18 13:14:14 +0300 |
---|---|---|
committer | Gleb Balykov <g.balykov@samsung.com> | 2020-03-25 15:29:41 +0300 |
commit | d9fc8fd2d681be8ecd6b0381abe49f26ce8a09b3 (patch) | |
tree | 115b3fb98299c3ef3d4cb943309c0399a1ad5529 | |
parent | 75e112f172ea733b81e5bf325d3139b2f0672260 (diff) | |
download | coreclr-d9fc8fd2d681be8ecd6b0381abe49f26ce8a09b3.tar.gz coreclr-d9fc8fd2d681be8ecd6b0381abe49f26ce8a09b3.tar.bz2 coreclr-d9fc8fd2d681be8ecd6b0381abe49f26ce8a09b3.zip |
add access(2) call before dlopening files
-rw-r--r-- | src/pal/src/loader/module.cpp | 9 |
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) { |