aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-09-21 19:21:32 -0700
committerMaximilian Hils <git@maximilianhils.com>2016-09-21 19:21:32 -0700
commit770936f1f9b56010011c2af7f5f854d88f1c1d4f (patch)
treeff67e18d3cd927a4f08b4be79b41d9c3033d52b3 /netlib
parent1e5a5b03f8d56df62a04a368bd5eb2d59cb7582a (diff)
downloadmitmproxy-770936f1f9b56010011c2af7f5f854d88f1c1d4f.tar.gz
mitmproxy-770936f1f9b56010011c2af7f5f854d88f1c1d4f.tar.bz2
mitmproxy-770936f1f9b56010011c2af7f5f854d88f1c1d4f.zip
raise TypeError on invalid header assignment, fix #1562
Diffstat (limited to 'netlib')
-rw-r--r--netlib/http/headers.py1
-rw-r--r--netlib/strutils.py5
2 files changed, 5 insertions, 1 deletions
diff --git a/netlib/http/headers.py b/netlib/http/headers.py
index 131e8ce5..b55874ca 100644
--- a/netlib/http/headers.py
+++ b/netlib/http/headers.py
@@ -14,6 +14,7 @@ if six.PY2: # pragma: no cover
return x
def _always_bytes(x):
+ strutils.always_bytes(x, "utf-8", "replace") # raises a TypeError if x != str/bytes/None.
return x
else:
# While headers _should_ be ASCII, it's not uncommon for certain headers to be utf-8 encoded.
diff --git a/netlib/strutils.py b/netlib/strutils.py
index 4cb3b805..d43c2aab 100644
--- a/netlib/strutils.py
+++ b/netlib/strutils.py
@@ -8,7 +8,10 @@ import six
def always_bytes(unicode_or_bytes, *encode_args):
if isinstance(unicode_or_bytes, six.text_type):
return unicode_or_bytes.encode(*encode_args)
- return unicode_or_bytes
+ elif isinstance(unicode_or_bytes, bytes) or unicode_or_bytes is None:
+ return unicode_or_bytes
+ else:
+ raise TypeError("Expected str or bytes, but got {}.".format(type(unicode_or_bytes).__name__))
def native(s, *encoding_opts):