← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1798184] [NEW] PY3: python3-ldap does not allow bytes for DN/RDN/field names

 

Public bug reported:

Under Python 2, python-ldap uses bytes by default. Under Python 3 this
is removed and bytes aren't allowed for DN/RDN/field names.

More details are here: http://www.python-ldap.org/en/latest/bytes_mode.html#bytes-mode
and here: https://github.com/python-ldap/python-ldap/blob/python-ldap-3.1.0/Lib/ldap/ldapobject.py#L111

== initial traceback ==

Here's the initial traceback from the failure:
https://paste.ubuntu.com/p/67THZb2m5m/

The last bit of the error is:

  File "/usr/lib/python3/dist-packages/ldap/ldapobject.py", line 314, in _ldap_call
    result = func(*args,**kwargs)
TypeError: simple_bind() argument 1 must be str or None, not bytes

A closer look at func shows:

func=<built-in method simple_bind of LDAP object at 0x7f9d0177b760>
args=(b'cn=admin,dc=test,dc=com', b'crapper', None, None)

== keystone ldap backend use of python-ldap ==

In simple_bind_s() of keystone's ldap backend, who and cred are encoded
as byte strings:

https://github.com/openstack/keystone/blob/14.0.0/keystone/identity/backends/ldap/common.py#L885

but that appears to no longer be valid use of python-ldap for py3.

** Affects: keystone
     Importance: Undecided
         Status: New

** Summary changed:

- PY3: python3-ldap does not allow bytes for no bytes for DN/RDN/field names
+ PY3: python3-ldap does not allow bytes for DN/RDN/field names

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Identity (keystone).
https://bugs.launchpad.net/bugs/1798184

Title:
  PY3: python3-ldap does not allow bytes for DN/RDN/field names

Status in OpenStack Identity (keystone):
  New

Bug description:
  Under Python 2, python-ldap uses bytes by default. Under Python 3 this
  is removed and bytes aren't allowed for DN/RDN/field names.

  More details are here: http://www.python-ldap.org/en/latest/bytes_mode.html#bytes-mode
  and here: https://github.com/python-ldap/python-ldap/blob/python-ldap-3.1.0/Lib/ldap/ldapobject.py#L111

  == initial traceback ==

  Here's the initial traceback from the failure:
  https://paste.ubuntu.com/p/67THZb2m5m/

  The last bit of the error is:

    File "/usr/lib/python3/dist-packages/ldap/ldapobject.py", line 314, in _ldap_call
      result = func(*args,**kwargs)
  TypeError: simple_bind() argument 1 must be str or None, not bytes

  A closer look at func shows:

  func=<built-in method simple_bind of LDAP object at 0x7f9d0177b760>
  args=(b'cn=admin,dc=test,dc=com', b'crapper', None, None)

  == keystone ldap backend use of python-ldap ==

  In simple_bind_s() of keystone's ldap backend, who and cred are
  encoded as byte strings:

  https://github.com/openstack/keystone/blob/14.0.0/keystone/identity/backends/ldap/common.py#L885

  but that appears to no longer be valid use of python-ldap for py3.

To manage notifications about this bug go to:
https://bugs.launchpad.net/keystone/+bug/1798184/+subscriptions


Follow ups