[svn] Escape non-printable characters in server response.

This commit is contained in:
hniksic 2007-02-02 01:36:49 -08:00
parent a161efc9ec
commit a83387134c
2 changed files with 20 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2007-02-02 Hrvoje Niksic <hniksic@xemacs.org>
* http.c (print_server_response): Escape non-printable characters
in server respone.
2007-02-02 Hrvoje Niksic <hniksic@xemacs.org>
* netrc.c: Don't make netrc_list static, as it prevents

View File

@ -738,6 +738,20 @@ resp_free (struct response *resp)
xfree (resp);
}
/* Print a single line of response, the characters [b, e). We tried
getting away with
logprintf (LOG_VERBOSE, "%s%.*s\n", prefix, (int) (e - b), b);
but that failed to escape the non-printable characters and, in fact,
caused crashes in UTF-8 locales. */
static void
print_response_line(const char *prefix, const char *b, const char *e)
{
char *copy;
BOUNDED_TO_ALLOCA(b, e, copy);
logprintf (LOG_VERBOSE, "%s%s\n", prefix, escnonprint(copy));
}
/* Print the server response, line by line, omitting the trailing CRLF
from individual header lines, and prefixed with PREFIX. */
@ -756,9 +770,7 @@ print_server_response (const struct response *resp, const char *prefix)
--e;
if (b < e && e[-1] == '\r')
--e;
/* This is safe even on printfs with broken handling of "%.<n>s"
because resp->headers ends with \0. */
logprintf (LOG_VERBOSE, "%s%.*s\n", prefix, (int) (e - b), b);
print_response_line(prefix, b, e);
}
}