mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-09-20 21:16:22 +02:00
New function to load windows system libraries
This function uses GetSystemDirectory() to make sure we load the version of the library from c:\windows\system32 (or local equivalent) rather than whatever version lives in the cwd.
This commit is contained in:
parent
fb34c66e83
commit
418e6caeeb
@ -26,6 +26,7 @@
|
||||
#include <io.h>
|
||||
#include <direct.h>
|
||||
#include <process.h>
|
||||
#include <tchar.h>
|
||||
#else
|
||||
#include <dirent.h>
|
||||
#include <pwd.h>
|
||||
@ -2793,3 +2794,17 @@ write_pidfile(char *filename)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MS_WINDOWS
|
||||
HANDLE
|
||||
load_windows_system_library(const TCHAR *library_name)
|
||||
{
|
||||
TCHAR path[MAX_PATH];
|
||||
unsigned n;
|
||||
n = GetSystemDirectory(path, 1024);
|
||||
if (n == 0 || n + _tcslen(library_name) + 2 >= MAX_PATH)
|
||||
return 0;
|
||||
_tcscat(path, TEXT("\\"));
|
||||
_tcscat(path, library_name);
|
||||
return LoadLibrary(path);
|
||||
}
|
||||
#endif
|
||||
|
@ -340,6 +340,10 @@ void start_daemon(void);
|
||||
void finish_daemon(const char *desired_cwd);
|
||||
void write_pidfile(char *filename);
|
||||
|
||||
#ifdef MS_WINDOWS
|
||||
HANDLE load_windows_system_library(const TCHAR *library_name);
|
||||
#endif
|
||||
|
||||
const char *libor_get_digests(void);
|
||||
|
||||
#endif
|
||||
|
@ -1139,6 +1139,19 @@ test_util_listdir(void *ptr)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef MS_WINDOWS
|
||||
static void
|
||||
test_util_load_win_lib(void *ptr)
|
||||
{
|
||||
HANDLE h = load_windows_system_library("advapi32.dll");
|
||||
|
||||
tt_assert(h);
|
||||
done:
|
||||
if (h)
|
||||
CloseHandle(h);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define UTIL_LEGACY(name) \
|
||||
{ #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name }
|
||||
|
||||
@ -1162,6 +1175,9 @@ struct testcase_t util_tests[] = {
|
||||
UTIL_TEST(find_str_at_start_of_line, 0),
|
||||
UTIL_TEST(asprintf, 0),
|
||||
UTIL_TEST(listdir, 0),
|
||||
#ifdef MS_WINDOWS
|
||||
UTIL_TEST(load_win_lib, 0),
|
||||
#endif
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user