summaryrefslogtreecommitdiffstats
path: root/Lib/http
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2022-12-05 22:27:55 (GMT)
committerGitHub <noreply@github.com>2022-12-05 22:27:55 (GMT)
commit7e29398407dbd53b714702abb89aa2fd7baca48a (patch)
tree58e6a710bc11ed6acce0fa8b777110818cf9be42 /Lib/http
parente9e63ad8653296c199446d6f7cdad889e492a34e (diff)
downloadcpython-7e29398407dbd53b714702abb89aa2fd7baca48a.zip
cpython-7e29398407dbd53b714702abb89aa2fd7baca48a.tar.gz
cpython-7e29398407dbd53b714702abb89aa2fd7baca48a.tar.bz2
gh-100001: Also escape \s in http.server log messages. (#100038)
Also \ escape \s in the http.server BaseHTTPRequestHandler.log_message so that it is technically possible to parse the line and reconstruct what the original data was. Without this a \xHH is ambiguious as to if it is a hex replacement we put in or the characters r"\x" came through in the original request line.
Diffstat (limited to 'Lib/http')
-rw-r--r--Lib/http/server.py1
1 files changed, 1 insertions, 0 deletions
diff --git a/Lib/http/server.py b/Lib/http/server.py
index 3b5bd9e..8acabff 100644
--- a/Lib/http/server.py
+++ b/Lib/http/server.py
@@ -566,6 +566,7 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler):
# https://en.wikipedia.org/wiki/List_of_Unicode_characters#Control_codes
_control_char_table = str.maketrans(
{c: fr'\x{c:02x}' for c in itertools.chain(range(0x20), range(0x7f,0xa0))})
+ _control_char_table[ord('\\')] = r'\\'
def log_message(self, format, *args):
"""Log an arbitrary message.