mirror of
https://github.com/moparisthebest/curl
synced 2024-08-13 17:03:50 -04:00
tool_cb_wrt: fix writing to Windows null device NUL
- Improve console detection. Prior to this change WriteConsole could be called to write to a handle that may not be a console, which would cause an error. This issue is limited to character devices that are not also consoles such as the null device NUL. Bug: https://github.com/curl/curl/issues/3175#issuecomment-439068724 Reported-by: Gisle Vanem
This commit is contained in:
parent
2bcdf722b8
commit
f5bc578f4c
@ -79,6 +79,9 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
|
|||||||
struct OperationConfig *config = outs->config;
|
struct OperationConfig *config = outs->config;
|
||||||
size_t bytes = sz * nmemb;
|
size_t bytes = sz * nmemb;
|
||||||
bool is_tty = config->global->isatty;
|
bool is_tty = config->global->isatty;
|
||||||
|
#ifdef WIN32
|
||||||
|
CONSOLE_SCREEN_BUFFER_INFO console_info;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Once that libcurl has called back tool_write_cb() the returned value
|
* Once that libcurl has called back tool_write_cb() the returned value
|
||||||
@ -156,7 +159,9 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if(isatty(fileno(outs->stream))) {
|
if(isatty(fileno(outs->stream)) &&
|
||||||
|
GetConsoleScreenBufferInfo(
|
||||||
|
(HANDLE)_get_osfhandle(fileno(outs->stream)), &console_info)) {
|
||||||
DWORD in_len = (DWORD)(sz * nmemb);
|
DWORD in_len = (DWORD)(sz * nmemb);
|
||||||
wchar_t* wc_buf;
|
wchar_t* wc_buf;
|
||||||
DWORD wc_len;
|
DWORD wc_len;
|
||||||
|
Loading…
Reference in New Issue
Block a user