aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-09-21 21:00:07 -0700
committerGitHub <noreply@github.com>2016-09-21 21:00:07 -0700
commitd5427c7298b0c6aee009a86dec041011427689e9 (patch)
tree00b84f3a616c1c2c6e3469c2fb2a0be4a9d5e265 /netlib
parent1e5a5b03f8d56df62a04a368bd5eb2d59cb7582a (diff)
parentf1d519d7c4231513c868179abf0fbfbb9387e633 (diff)
downloadmitmproxy-d5427c7298b0c6aee009a86dec041011427689e9.tar.gz
mitmproxy-d5427c7298b0c6aee009a86dec041011427689e9.tar.bz2
mitmproxy-d5427c7298b0c6aee009a86dec041011427689e9.zip
Merge pull request #1563 from mhils/fix-1562
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):