[tor-commits] [bridgedb/main] Added additional codecs for decoding HTTP requests

meskio at torproject.org meskio at torproject.org
Thu Nov 25 09:46:45 UTC 2021


commit dbbd7fae44539b9db397ef42dd8e60ba58a83bc2
Author: Armin Huremagic <columbeff at 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





More information about the tor-commits mailing list