commit dbbd7fae44539b9db397ef42dd8e60ba58a83bc2 Author: Armin Huremagic columbeff@gmail.com Date: Thu Nov 18 23:57:42 2021 +0100
Added additional codecs for decoding HTTP requests
In case the request is not 'utf-8' encoded, this fix checks for additional codecs, in this case 'latin-1' and adds a try-catch block to it. --- bridgedb/distributors/https/server.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/bridgedb/distributors/https/server.py b/bridgedb/distributors/https/server.py index 818e2e0..81d8e81 100644 --- a/bridgedb/distributors/https/server.py +++ b/bridgedb/distributors/https/server.py @@ -107,9 +107,15 @@ def stringifyRequestArgs(args): # Convert all key/value pairs from bytes to str. str_args = {} for arg, values in args.items(): - arg = arg if isinstance(arg, str) else arg.decode("utf-8") - values = [value.decode("utf-8") if isinstance(value, bytes) - else value for value in values] + codecs = ["utf-8", "latin-1"] + for c in codecs: + try: + arg = arg if isinstance(arg, str) else arg.decode(c) + values = [value.decode(c) if isinstance(value, bytes) else value for value in values] + except UnicodeDecodeError: + continue + else: + break str_args[arg] = values
return str_args
tor-commits@lists.torproject.org