[Bug 1823646] Re: python-urllib3 ftbfs in cosmic

Marc Deslauriers marc.deslauriers at canonical.com
Wed May 22 15:09:55 UTC 2019


This was fixed in (1.22-1ubuntu0.18.10.1)

** Changed in: python-urllib3 (Ubuntu)
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to python-urllib3 in Ubuntu.
https://bugs.launchpad.net/bugs/1823646

Title:
  python-urllib3 ftbfs in cosmic

Status in python-urllib3 package in Ubuntu:
  Fix Released

Bug description:
  https://launchpadlibrarian.net/418304792/buildlog_ubuntu-cosmic-amd64
  .python-urllib3_1.22-1_BUILDING.txt.gz

  =================================== FAILURES ===================================
  _________________ TestConnection.test_match_hostname_mismatch __________________

  self = <test.test_connection.TestConnection object at 0x7f46d583e160>

      def test_match_hostname_mismatch(self):
          cert = {'subjectAltName': [('DNS', 'foo')]}
          asserted_hostname = 'bar'
          try:
              with mock.patch('urllib3.connection.log.error') as mock_log:
  >               _match_hostname(cert, asserted_hostname)

  test/test_connection.py:39: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

  cert = {'subjectAltName': [('DNS', 'foo')]}, asserted_hostname = 'bar'

      def _match_hostname(cert, asserted_hostname):
          try:
  >           match_hostname(cert, asserted_hostname)

  urllib3/connection.py:356: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

  cert = {'subjectAltName': [('DNS', 'foo')]}, hostname = 'bar'

      def match_hostname(cert, hostname):
          """Verify that *cert* (in decoded format as returned by
          SSLSocket.getpeercert()) matches the *hostname*.  RFC 2818 and RFC 6125
          rules are followed.
      
          The function matches IP addresses rather than dNSNames if hostname is a
          valid ipaddress string. IPv4 addresses are supported on all platforms.
          IPv6 addresses are supported on platforms with IPv6 support (AF_INET6
          and inet_pton).
      
          CertificateError is raised on failure. On success, the function
          returns nothing.
          """
          if not cert:
              raise ValueError("empty or no certificate, match_hostname needs a "
                               "SSL socket or SSL context with either "
                               "CERT_OPTIONAL or CERT_REQUIRED")
          try:
              host_ip = _inet_paton(hostname)
          except ValueError:
              # Not an IP address (common case)
              host_ip = None
          dnsnames = []
          san = cert.get('subjectAltName', ())
          for key, value in san:
              if key == 'DNS':
                  if host_ip is None and _dnsname_match(value, hostname):
                      return
                  dnsnames.append(value)
              elif key == 'IP Address':
                  if host_ip is not None and _ipaddress_match(value, host_ip):
                      return
                  dnsnames.append(value)
          if not dnsnames:
              # The subject is only checked when there is no dNSName entry
              # in subjectAltName
              for sub in cert.get('subject', ()):
                  for key, value in sub:
                      # XXX according to RFC 2818, the most specific Common Name
                      # must be used.
                      if key == 'commonName':
                          if _dnsname_match(value, hostname):
                              return
                          dnsnames.append(value)
          if len(dnsnames) > 1:
              raise CertificateError("hostname %r "
                  "doesn't match either of %s"
                  % (hostname, ', '.join(map(repr, dnsnames))))
          elif len(dnsnames) == 1:
              raise CertificateError("hostname %r "
                  "doesn't match %r"
  >               % (hostname, dnsnames[0]))
  E           ssl.SSLCertVerificationError: ("hostname 'bar' doesn't match 'foo'",)

  /usr/lib/python3.7/ssl.py:327: SSLCertVerificationError

  During handling of the above exception, another exception occurred:

  self = <test.test_connection.TestConnection object at 0x7f46d583e160>

      def test_match_hostname_mismatch(self):
          cert = {'subjectAltName': [('DNS', 'foo')]}
          asserted_hostname = 'bar'
          try:
              with mock.patch('urllib3.connection.log.error') as mock_log:
                  _match_hostname(cert, asserted_hostname)
          except CertificateError as e:
  >           assert str(e) == "hostname 'bar' doesn't match 'foo'"
  E           assert '("hostname \...ch \'foo\'",)' == "hostname 'bar...t match 'foo'"
  E             - ("hostname 'bar' doesn't match 'foo'",)
  E             ? --                                  ---
  E             + hostname 'bar' doesn't match 'foo'

  test/test_connection.py:41: AssertionError
  ======== 1 failed, 545 passed, 51 skipped, 1 deselected in 7.44 seconds ========
  /usr/lib/python3/dist-packages/_pytest/assertion/rewrite.py:6: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
    import imp
  /usr/lib/python3/dist-packages/pkg_resources/_vendor/pyparsing.py:943: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
    collections.MutableMapping.register(ParseResults)
  /usr/lib/python3/dist-packages/pkg_resources/_vendor/pyparsing.py:3245: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
    elif isinstance( exprs, collections.Iterable ):
  E: pybuild pybuild:338: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.7_urllib3/build; python3.7 -m pytest --ignore=test/appengine --ignore=test/with_dummyserver --ignore=test/test_connectionpool.py --ignore=test/contrib/test_socks.py -k-test_recent_date
  dh_auto_test: pybuild --test -i python{version} -p "3.7 3.6" returned exit code 13
  make: *** [debian/rules:16: build] Error 25

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-urllib3/+bug/1823646/+subscriptions



More information about the Ubuntu-openstack-bugs mailing list