summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCory Benfield <lukasaoz@gmail.com>2015-04-12 08:57:03 -0400
committerCory Benfield <lukasaoz@gmail.com>2015-04-13 16:11:48 -0400
commit63759dc59052fc53b159bc139ab9fa9ecfc5ae85 (patch)
tree68742e665ab2d7882317731d698202517fe3ebdf
parent75279586aeb281d1bd0e7e3ef062cde6640dcac6 (diff)
downloadpyopenssl-63759dc59052fc53b159bc139ab9fa9ecfc5ae85.tar.gz
Catch non-bytestrings from ALPN callbacks.
-rw-r--r--OpenSSL/SSL.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/OpenSSL/SSL.py b/OpenSSL/SSL.py
index 1e40917..cc2472f 100644
--- a/OpenSSL/SSL.py
+++ b/OpenSSL/SSL.py
@@ -5,6 +5,7 @@ from weakref import WeakValueDictionary
from errno import errorcode
from six import text_type as _text_type
+from six import binary_type as _binary_type
from six import integer_types as integer_types
from six import int2byte, indexbytes
@@ -1004,6 +1005,9 @@ class Context(object):
# Call the callback
outstr = callback(conn, protolist)
+ if not isinstance(outstr, _binary_type):
+ raise TypeError("ALPN callback must return a bytestring.")
+
# Save our callback arguments on the connection object to make sure
# that they don't get freed before OpenSSL can use them. Then,
# return them in the appropriate output parameters.