mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
Merge remote branch 'origin/maint-0.2.2'
This commit is contained in:
commit
501399d14a
4
changes/bug1954_loadlib
Normal file
4
changes/bug1954_loadlib
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Major bugfixes
|
||||||
|
- Always search the windows system directory for system DLLs, and
|
||||||
|
nowhere else. Fixes bug 1954.
|
||||||
|
|
@ -26,6 +26,7 @@
|
|||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <direct.h>
|
#include <direct.h>
|
||||||
#include <process.h>
|
#include <process.h>
|
||||||
|
#include <tchar.h>
|
||||||
#else
|
#else
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
@ -2862,3 +2863,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, MAX_PATH);
|
||||||
|
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 finish_daemon(const char *desired_cwd);
|
||||||
void write_pidfile(char *filename);
|
void write_pidfile(char *filename);
|
||||||
|
|
||||||
|
#ifdef MS_WINDOWS
|
||||||
|
HANDLE load_windows_system_library(const TCHAR *library_name);
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *libor_get_digests(void);
|
const char *libor_get_digests(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3131,8 +3131,7 @@ load_nameservers_with_getnetworkparams(void)
|
|||||||
IP_ADDR_STRING *ns;
|
IP_ADDR_STRING *ns;
|
||||||
GetNetworkParams_fn_t fn;
|
GetNetworkParams_fn_t fn;
|
||||||
|
|
||||||
/* XXXX Possibly, we should hardcode the location of this DLL. */
|
if (!(handle = load_windows_system_library(TEXT("iphlpapi.dll")))) {
|
||||||
if (!(handle = LoadLibrary(TEXT("iphlpapi.dll")))) {
|
|
||||||
log(EVDNS_LOG_WARN, "Could not open iphlpapi.dll");
|
log(EVDNS_LOG_WARN, "Could not open iphlpapi.dll");
|
||||||
/* right now status = 0, doesn't that mean "good" - mikec */
|
/* right now status = 0, doesn't that mean "good" - mikec */
|
||||||
status = -1;
|
status = -1;
|
||||||
|
@ -138,8 +138,7 @@ nt_service_loadlibrary(void)
|
|||||||
if (service_fns.loaded)
|
if (service_fns.loaded)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* XXXX Possibly, we should hardcode the location of this DLL. */
|
if (!(library = load_windows_system_library(TEXT("advapi32.dll")))) {
|
||||||
if (!(library = LoadLibrary(TEXT("advapi32.dll")))) {
|
|
||||||
log_err(LD_GENERAL, "Couldn't open advapi32.dll. Are you trying to use "
|
log_err(LD_GENERAL, "Couldn't open advapi32.dll. Are you trying to use "
|
||||||
"NT services on Windows 98? That doesn't work.");
|
"NT services on Windows 98? That doesn't work.");
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -1195,6 +1195,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) \
|
#define UTIL_LEGACY(name) \
|
||||||
{ #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name }
|
{ #name, legacy_test_helper, 0, &legacy_setup, test_util_ ## name }
|
||||||
|
|
||||||
@ -1218,6 +1231,9 @@ struct testcase_t util_tests[] = {
|
|||||||
UTIL_TEST(find_str_at_start_of_line, 0),
|
UTIL_TEST(find_str_at_start_of_line, 0),
|
||||||
UTIL_TEST(asprintf, 0),
|
UTIL_TEST(asprintf, 0),
|
||||||
UTIL_TEST(listdir, 0),
|
UTIL_TEST(listdir, 0),
|
||||||
|
#ifdef MS_WINDOWS
|
||||||
|
UTIL_TEST(load_win_lib, 0),
|
||||||
|
#endif
|
||||||
END_OF_TESTCASES
|
END_OF_TESTCASES
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user