PrintRawUriFp does not properly escape backslash. This causes confusion
between a \ character and an hex-encoded character. PrintRawUriBuffer,
instead, correctly does backslash-encoding.
Adding proper escaping of backslash to PrintRawUriFp.
for (u = 0; u < buflen; u++) {
if (isprint(buf[u]) && buf[u] != '\"') {
- PrintBufferData(nbuf, &offset, BUFFER_LENGTH,
- "%c", buf[u]);
+ if (buf[u] == '\\') {
+ PrintBufferData(nbuf, &offset, BUFFER_LENGTH,
+ "\\\\");
+ } else {
+ PrintBufferData(nbuf, &offset, BUFFER_LENGTH,
+ "%c", buf[u]);
+ }
} else {
PrintBufferData(nbuf, &offset, BUFFER_LENGTH,
"\\x%02X", buf[u]);