diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sendf.c | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/sendf.c b/lib/sendf.c index d3c10b369..77eacdf5f 100644 --- a/lib/sendf.c +++ b/lib/sendf.c @@ -237,7 +237,18 @@ void Curl_infof(struct Curl_easy *data, const char *fmt, ...)      size_t len;      char print_buffer[2048 + 1];      va_start(ap, fmt); -    vsnprintf(print_buffer, sizeof(print_buffer), fmt, ap); +    len = vsnprintf(print_buffer, sizeof(print_buffer), fmt, ap); +    /* +     * Indicate truncation of the input by replacing the last 3 characters +     * with "...", and transfer the newline over in case the format had one. +     */ +    if(len >= sizeof(print_buffer)) { +      len = strlen(fmt); +      if(fmt[--len] == '\n') +        snprintf(print_buffer + (sizeof(print_buffer) - 5), 5, "...\n"); +      else +        snprintf(print_buffer + (sizeof(print_buffer) - 4), 4, "..."); +    }      va_end(ap);      len = strlen(print_buffer);      Curl_debug(data, CURLINFO_TEXT, print_buffer, len);  | 
