d58c6864e8
- escape non-printable characters - drop to11 patch for now (#223754, #227853, #227498)
35 lines
1.1 KiB
Diff
35 lines
1.1 KiB
Diff
--- wget-1.10.2/src/http.c.escapechars 2007-02-12 06:18:40.000000000 -0500
|
|
+++ wget-1.10.2/src/http.c 2007-02-12 06:18:20.000000000 -0500
|
|
@@ -741,6 +741,20 @@
|
|
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. */
|
|
|
|
@@ -759,9 +773,7 @@
|
|
--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, e - b, b);
|
|
+ print_response_line(prefix, b, e);
|
|
}
|
|
}
|
|
|