diff --git a/dev/MRTCore/mrt/Core/src/MRM.cpp b/dev/MRTCore/mrt/Core/src/MRM.cpp index cdf750cc..48177356 100644 --- a/dev/MRTCore/mrt/Core/src/MRM.cpp +++ b/dev/MRTCore/mrt/Core/src/MRM.cpp @@ -992,9 +992,15 @@ STDAPI MrmGetFilePathFromName(_In_opt_ PCWSTR filename, _Outptr_ PWSTR* filePath wil::unique_cotaskmem_string baseDir; if (SUCCEEDED(wil::TryGetEnvironmentVariableW(L"MICROSOFT_WINDOWSAPPRUNTIME_BASE_DIRECTORY", baseDir)) && baseDir) { - path.swap(baseDir); - RETURN_IF_FAILED(StringCchLengthW(path.get(), STRSAFE_MAX_CCH, &length)); - RETURN_IF_FAILED(SizeTAdd(length, 1, &bufferCount)); + // Validate that the base directory is accessible before using it + DWORD baseDirAttributes = GetFileAttributes(baseDir.get()); + if (baseDirAttributes != INVALID_FILE_ATTRIBUTES && (baseDirAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + path.swap(baseDir); + RETURN_IF_FAILED(StringCchLengthW(path.get(), STRSAFE_MAX_CCH, &length)); + RETURN_IF_FAILED(SizeTAdd(length, 1, &bufferCount)); + } + // If base directory is invalid, continue with the original exe path } filenameToUse = c_defaultPriFilename; }