diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-07-11 15:16:49 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-07-11 15:16:49 -0700 |
commit | 0a2ff7c6b5ec5e4301a9cfb3c0dd26590d70ad7a (patch) | |
tree | fc3b78100325d2f220f86ce5c4af848cbb5eb2ba /compat/winansi.c | |
parent | Merge branch 'sg/ci-brew-gcc-workaround' (diff) | |
parent | mingw: fix possible buffer overrun when calling `GetUserNameW()` (diff) | |
download | tgif-0a2ff7c6b5ec5e4301a9cfb3c0dd26590d70ad7a.tar.xz |
Merge branch 'js/mingw-use-utf8'
Windows update.
* js/mingw-use-utf8:
mingw: fix possible buffer overrun when calling `GetUserNameW()`
mingw: use Unicode functions explicitly
mingw: get pw_name in UTF-8 format
Diffstat (limited to 'compat/winansi.c')
-rw-r--r-- | compat/winansi.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/compat/winansi.c b/compat/winansi.c index efc0abcdac..cacd82c833 100644 --- a/compat/winansi.c +++ b/compat/winansi.c @@ -608,7 +608,7 @@ int winansi_isatty(int fd) void winansi_init(void) { int con1, con2; - char name[32]; + wchar_t name[32]; /* check if either stdout or stderr is a console output screen buffer */ con1 = is_console(1); @@ -628,13 +628,15 @@ void winansi_init(void) } /* create a named pipe to communicate with the console thread */ - xsnprintf(name, sizeof(name), "\\\\.\\pipe\\winansi%lu", GetCurrentProcessId()); - hwrite = CreateNamedPipe(name, PIPE_ACCESS_OUTBOUND, + if (swprintf(name, ARRAY_SIZE(name) - 1, L"\\\\.\\pipe\\winansi%lu", + GetCurrentProcessId()) < 0) + die("Could not initialize winansi pipe name"); + hwrite = CreateNamedPipeW(name, PIPE_ACCESS_OUTBOUND, PIPE_TYPE_BYTE | PIPE_WAIT, 1, BUFFER_SIZE, 0, 0, NULL); if (hwrite == INVALID_HANDLE_VALUE) die_lasterr("CreateNamedPipe failed"); - hread = CreateFile(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + hread = CreateFileW(name, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (hread == INVALID_HANDLE_VALUE) die_lasterr("CreateFile for named pipe failed"); |