VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Platform/Unix/Process.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Platform/Unix/Process.cpp')
-rw-r--r--src/Platform/Unix/Process.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/Platform/Unix/Process.cpp b/src/Platform/Unix/Process.cpp
index 0c2a9c59..395d4bc9 100644
--- a/src/Platform/Unix/Process.cpp
+++ b/src/Platform/Unix/Process.cpp
@@ -30,43 +30,43 @@ namespace VeraCrypt
bool Process::IsExecutable(const std::string& path) {
struct stat sb;
if (stat(path.c_str(), &sb) == 0) {
return S_ISREG(sb.st_mode) && (sb.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH));
}
return false;
}
// Find executable in system paths
std::string Process::FindSystemBinary(const char* name, std::string& errorMsg) {
if (!name) {
errno = EINVAL; // Invalid argument
errorMsg = "Invalid input: name or paths is NULL";
return "";
}
// Default system directories to search for executables
#ifdef TC_MACOSX
const char* defaultDirs[] = {"/usr/local/bin", "/usr/bin", "/bin", "/user/sbin", "/sbin"};
-#elseif TC_FREEBSD
+#elif TC_FREEBSD
const char* defaultDirs[] = {"/sbin", "/bin", "/usr/sbin", "/usr/bin", "/usr/local/sbin", "/usr/local/bin"};
-#elseif TC_OPENBSD
+#elif TC_OPENBSD
const char* defaultDirs[] = {"/sbin", "/bin", "/usr/sbin", "/usr/bin", "/usr/X11R6/bin", "/usr/local/sbin", "/usr/local/bin"};
#else
const char* defaultDirs[] = {"/usr/local/sbin", "/usr/local/bin", "/usr/sbin", "/usr/bin", "/sbin", "/bin"};
#endif
const size_t defaultDirCount = sizeof(defaultDirs) / sizeof(defaultDirs[0]);
std::string currentPath(name);
// If path doesn't start with '/', prepend default directories
if (currentPath[0] != '/') {
for (size_t i = 0; i < defaultDirCount; ++i) {
std::string combinedPath = std::string(defaultDirs[i]) + "/" + currentPath;
if (IsExecutable(combinedPath)) {
return combinedPath;
}
}
} else if (IsExecutable(currentPath)) {
return currentPath;
}