mirror of
https://github.com/curl/curl.git
synced 2025-09-18 18:12:49 +03:00
Prevent failf() from using the va_list variable more than once.
See bug report #1088962 and Single Unix Specification: http://www.opengroup.org/onlinepubs/007908799/xsh/vfprintf.html
This commit is contained in:
parent
3de85777de
commit
a173e07eec
22
lib/sendf.c
22
lib/sendf.c
|
@ -155,21 +155,21 @@ void Curl_failf(struct SessionHandle *data, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
vsnprintf(data->state.buffer, BUFSIZE, fmt, ap);
|
||||||
|
|
||||||
if(data->set.errorbuffer && !data->state.errorbuf) {
|
if(data->set.errorbuffer && !data->state.errorbuf) {
|
||||||
vsnprintf(data->set.errorbuffer, CURL_ERROR_SIZE, fmt, ap);
|
snprintf(data->set.errorbuffer, CURL_ERROR_SIZE, "%s", data->state.buffer);
|
||||||
data->state.errorbuf = TRUE; /* wrote error string */
|
data->state.errorbuf = TRUE; /* wrote error string */
|
||||||
}
|
}
|
||||||
if(data->set.verbose) {
|
if(data->set.verbose) {
|
||||||
size_t len;
|
len = strlen(data->state.buffer);
|
||||||
|
if(len < BUFSIZE - 1) {
|
||||||
vsnprintf(data->state.buffer, BUFSIZE, fmt, ap);
|
data->state.buffer[len] = '\n';
|
||||||
len = strlen(data->state.buffer);
|
data->state.buffer[++len] = '\0';
|
||||||
|
}
|
||||||
if(len < BUFSIZE - 1) {
|
Curl_debug(data, CURLINFO_TEXT, data->state.buffer, len, NULL);
|
||||||
data->state.buffer[len] = '\n';
|
|
||||||
data->state.buffer[++len] = '\0';
|
|
||||||
}
|
|
||||||
Curl_debug(data, CURLINFO_TEXT, data->state.buffer, len, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user