diff --git a/projects/clr/rocclr/runtime/device/pal/palcompiler.cpp b/projects/clr/rocclr/runtime/device/pal/palcompiler.cpp index ef19c2dfea..ddeb6045e5 100644 --- a/projects/clr/rocclr/runtime/device/pal/palcompiler.cpp +++ b/projects/clr/rocclr/runtime/device/pal/palcompiler.cpp @@ -172,10 +172,14 @@ static void checkLLVM_BIN() { if (llvmBin_.empty()) { Dl_info info; if (dladdr((const void*)&amd::Device::init, &info)) { - llvmBin_ = dirname(strdup(info.dli_fname)); - size_t pos = llvmBin_.rfind("lib"); - if (pos != std::string::npos) { - llvmBin_.replace(pos, 3, "bin"); + char* str = strdup(info.dli_fname); + if (str) { + llvmBin_ = dirname(str); + free(str); + size_t pos = llvmBin_.rfind("lib"); + if (pos != std::string::npos) { + llvmBin_.replace(pos, 3, "bin"); + } } } } diff --git a/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp b/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp index aed90cdc2f..e70bc6f640 100644 --- a/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/roccompiler.cpp @@ -367,10 +367,14 @@ static void checkLLVM_BIN() { if (llvmBin_.empty()) { Dl_info info; if (dladdr((const void*)&amd::Device::init, &info)) { - llvmBin_ = dirname(strdup(info.dli_fname)); - size_t pos = llvmBin_.rfind("lib"); - if (pos != std::string::npos) { - llvmBin_.replace(pos, 3, "bin"); + char* str = strdup(info.dli_fname); + if (str) { + llvmBin_ = dirname(str); + free(str); + size_t pos = llvmBin_.rfind("lib"); + if (pos != std::string::npos) { + llvmBin_.replace(pos, 3, "bin"); + } } } }