mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Merge branch 'bug6097'
This commit is contained in:
commit
a6180b7f29
9 changed files with 41 additions and 16 deletions
5
changes/bug5909
Normal file
5
changes/bug5909
Normal file
|
@ -0,0 +1,5 @@
|
|||
o Major bugfixes:
|
||||
- When building Tor on Windows with -DUNICODE (not default),
|
||||
ensure that error messages, filenames, and DNS server names are
|
||||
always NUL-terminated when we convert them to a single-byte
|
||||
encoding. Fixes bug 5909; bugfix on 0.2.2.16-alpha.
|
3
changes/fix_unicode
Normal file
3
changes/fix_unicode
Normal file
|
@ -0,0 +1,3 @@
|
|||
o Minor bugfixes:
|
||||
- Make Tor build correctly again with -DUNICODE -D_UNICODE defined.
|
||||
Bugfix on 0.2.2.16-alpha; fixes bug 6097.
|
|
@ -3046,28 +3046,37 @@ format_win32_error(DWORD err)
|
|||
{
|
||||
TCHAR *str = NULL;
|
||||
char *result;
|
||||
DWORD n;
|
||||
|
||||
/* Somebody once decided that this interface was better than strerror(). */
|
||||
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
n = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM |
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL, err,
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPVOID)&str,
|
||||
(LPVOID)&str,
|
||||
0, NULL);
|
||||
|
||||
if (str) {
|
||||
if (str && n) {
|
||||
#ifdef UNICODE
|
||||
char abuf[1024] = {0};
|
||||
wcstombs(abuf,str,1024);
|
||||
result = tor_strdup(abuf);
|
||||
size_t len;
|
||||
if (n > 128*1024)
|
||||
len = (128 * 1024) * 2 + 1; /* This shouldn't be possible, but let's
|
||||
* make sure. */
|
||||
else
|
||||
len = n * 2 + 1;
|
||||
result = tor_malloc(len);
|
||||
wcstombs(result,str,len);
|
||||
result[len-1] = '\0';
|
||||
#else
|
||||
result = tor_strdup(str);
|
||||
#endif
|
||||
LocalFree(str); /* LocalFree != free() */
|
||||
} else {
|
||||
result = tor_strdup("<unformattable error>");
|
||||
}
|
||||
if (str) {
|
||||
LocalFree(str); /* LocalFree != free() */
|
||||
}
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -2855,7 +2855,7 @@ tor_listdir(const char *dirname)
|
|||
#ifdef _WIN32
|
||||
char *pattern=NULL;
|
||||
TCHAR tpattern[MAX_PATH] = {0};
|
||||
char name[MAX_PATH] = {0};
|
||||
char name[MAX_PATH*2+1] = {0};
|
||||
HANDLE handle;
|
||||
WIN32_FIND_DATA findData;
|
||||
tor_asprintf(&pattern, "%s\\*", dirname);
|
||||
|
@ -2872,6 +2872,7 @@ tor_listdir(const char *dirname)
|
|||
while (1) {
|
||||
#ifdef UNICODE
|
||||
wcstombs(name,findData.cFileName,MAX_PATH);
|
||||
name[sizeof(name)-1] = '\0';
|
||||
#else
|
||||
strlcpy(name,findData.cFileName,sizeof(name));
|
||||
#endif
|
||||
|
@ -3380,7 +3381,7 @@ tor_spawn_background(const char *const filename, const char **argv,
|
|||
process_handle_t *process_handle;
|
||||
int status;
|
||||
|
||||
STARTUPINFO siStartInfo;
|
||||
STARTUPINFOA siStartInfo;
|
||||
BOOL retval = FALSE;
|
||||
|
||||
SECURITY_ATTRIBUTES saAttr;
|
||||
|
@ -3441,7 +3442,7 @@ tor_spawn_background(const char *const filename, const char **argv,
|
|||
|
||||
/* Create the child process */
|
||||
|
||||
retval = CreateProcess(filename, // module name
|
||||
retval = CreateProcessA(filename, // module name
|
||||
joined_argv, // command line
|
||||
/* TODO: should we set explicit security attributes? (#2046, comment 5) */
|
||||
NULL, // process security attributes
|
||||
|
|
|
@ -4302,7 +4302,7 @@ static char *
|
|||
get_windows_conf_root(void)
|
||||
{
|
||||
static int is_set = 0;
|
||||
static char path[MAX_PATH+1];
|
||||
static char path[MAX_PATH*2+1];
|
||||
TCHAR tpath[MAX_PATH] = {0};
|
||||
|
||||
LPITEMIDLIST idl;
|
||||
|
@ -4332,7 +4332,8 @@ get_windows_conf_root(void)
|
|||
/* Convert the path from an "ID List" (whatever that is!) to a path. */
|
||||
result = SHGetPathFromIDList(idl, tpath);
|
||||
#ifdef UNICODE
|
||||
wcstombs(path,tpath,MAX_PATH);
|
||||
wcstombs(path,tpath,sizeof(path));
|
||||
path[sizeof(path)-1] = '\0';
|
||||
#else
|
||||
strlcpy(path,tpath,sizeof(path));
|
||||
#endif
|
||||
|
|
|
@ -3213,7 +3213,7 @@ static int
|
|||
config_nameserver_from_reg_key(HKEY key, const TCHAR *subkey)
|
||||
{
|
||||
char *buf;
|
||||
char ansibuf[MAX_PATH] = {0};
|
||||
char ansibuf[MAX_PATH] = {0};
|
||||
DWORD bufsz = 0, type = 0;
|
||||
int status = 0;
|
||||
|
||||
|
@ -3226,6 +3226,7 @@ config_nameserver_from_reg_key(HKEY key, const TCHAR *subkey)
|
|||
if (RegQueryValueEx(key, subkey, 0, &type, (LPBYTE)buf, &bufsz)
|
||||
== ERROR_SUCCESS && bufsz > 1) {
|
||||
wcstombs(ansibuf,(wchar_t*)buf,MAX_PATH);/*XXXX UNICODE */
|
||||
abuf[MAX_PATH-1] = '\0';
|
||||
status = evdns_nameserver_ip_add_line(ansibuf);
|
||||
}
|
||||
|
||||
|
|
|
@ -455,7 +455,7 @@ static char *
|
|||
nt_service_command_line(int *using_default_torrc)
|
||||
{
|
||||
TCHAR tor_exe[MAX_PATH+1];
|
||||
char tor_exe_ascii[MAX_PATH+1];
|
||||
char tor_exe_ascii[MAX_PATH*2+1];
|
||||
char *command=NULL, *options=NULL;
|
||||
smartlist_t *sl;
|
||||
int i;
|
||||
|
@ -483,6 +483,7 @@ nt_service_command_line(int *using_default_torrc)
|
|||
|
||||
#ifdef UNICODE
|
||||
wcstombs(tor_exe_ascii, tor_exe, sizeof(tor_exe_ascii));
|
||||
tor_exe_ascii[sizeof(tor_exe_ascii)-1] = '\0';
|
||||
#else
|
||||
strlcpy(tor_exe_ascii, tor_exe, sizeof(tor_exe_ascii));
|
||||
#endif
|
||||
|
|
|
@ -91,7 +91,7 @@ setup_directory(void)
|
|||
char buf[MAX_PATH];
|
||||
const char *tmp = buf;
|
||||
/* If this fails, we're probably screwed anyway */
|
||||
if (!GetTempPath(sizeof(buf),buf))
|
||||
if (!GetTempPathA(sizeof(buf),buf))
|
||||
tmp = "c:\\windows\\temp";
|
||||
tor_snprintf(temp_dir, sizeof(temp_dir),
|
||||
"%s\\tor_test_%d", tmp, (int)getpid());
|
||||
|
|
|
@ -14,6 +14,10 @@
|
|||
#include "mempool.h"
|
||||
#include "memarea.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <tchar.h>
|
||||
#endif
|
||||
|
||||
static void
|
||||
test_util_time(void)
|
||||
{
|
||||
|
@ -2113,7 +2117,7 @@ test_util_parent_dir(void *ptr)
|
|||
static void
|
||||
test_util_load_win_lib(void *ptr)
|
||||
{
|
||||
HANDLE h = load_windows_system_library("advapi32.dll");
|
||||
HANDLE h = load_windows_system_library(_T("advapi32.dll"));
|
||||
(void) ptr;
|
||||
|
||||
tt_assert(h);
|
||||
|
|
Loading…
Add table
Reference in a new issue