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:
Daniel Stenberg 2004-12-21 14:22:10 +00:00
parent 3de85777de
commit a173e07eec
1 changed files with 11 additions and 11 deletions

View File

@ -155,21 +155,21 @@ void Curl_failf(struct SessionHandle *data, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
size_t len;
vsnprintf(data->state.buffer, BUFSIZE, fmt, ap);
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 */
}
if(data->set.verbose) {
size_t len;
vsnprintf(data->state.buffer, BUFSIZE, fmt, ap);
len = strlen(data->state.buffer);
if(len < BUFSIZE - 1) {
data->state.buffer[len] = '\n';
data->state.buffer[++len] = '\0';
}
Curl_debug(data, CURLINFO_TEXT, data->state.buffer, len, NULL);
len = strlen(data->state.buffer);
if(len < BUFSIZE - 1) {
data->state.buffer[len] = '\n';
data->state.buffer[++len] = '\0';
}
Curl_debug(data, CURLINFO_TEXT, data->state.buffer, len, NULL);
}
va_end(ap);