From 8c1f5edd12d755c770d1fd3a6dc8251c95588600 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Wed, 13 Sep 2017 22:06:12 +0800 Subject: fix a bug with URI value when parsing a string with no hostname (#3909) strings of the form "scheme:///anything" would incorrectly have two slashes dropped. This is fixed in two code paths in this PR but one of those code paths will be entirely removed in a followup PR. --- src/cryptography/hazmat/backends/openssl/decode_asn1.py | 3 ++- src/cryptography/x509/general_name.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cryptography/hazmat/backends/openssl/decode_asn1.py b/src/cryptography/hazmat/backends/openssl/decode_asn1.py index 9c2d763e..f178af07 100644 --- a/src/cryptography/hazmat/backends/openssl/decode_asn1.py +++ b/src/cryptography/hazmat/backends/openssl/decode_asn1.py @@ -102,7 +102,8 @@ def _decode_general_name(backend, gn): if parsed.hostname: hostname = idna.decode(parsed.hostname) else: - hostname = "" + # There's no IDNA so we can immediately return + return x509.UniformResourceIdentifier(data) if parsed.port: netloc = hostname + u":" + six.text_type(parsed.port) else: diff --git a/src/cryptography/x509/general_name.py b/src/cryptography/x509/general_name.py index 3ad71e4c..768be3bb 100644 --- a/src/cryptography/x509/general_name.py +++ b/src/cryptography/x509/general_name.py @@ -274,7 +274,8 @@ class UniformResourceIdentifier(object): ) parsed = urllib_parse.urlparse(self.bytes_value) if not parsed.hostname: - netloc = "" + # There's no idna here so we can immediately return + return self.bytes_value.decode("utf-8") elif parsed.port: netloc = idna.decode(parsed.hostname) + ":{0}".format(parsed.port) else: -- cgit v1.2.3