Fix LDAP backend option setting.
Review Request #388 — Created May 15, 2008 and submitted
|Review Board SVN (deprecated)|
The Python LDAP library (I'm using 2.3.4) assumes the OPT_PROTOCOL_VERSION is an integer. Due to some bad error handling code, a TypeError is set, but the C extension module does not handle it properly, so in strange situations you'll get a random TypeError raised. (Look at options.c in the py ldap source near the LDAP_OPT_PROTOCOL_VERSION case statement). Alternatively, I think this line could be removed, since the python-ldap library seems to default to version 3.
I was still able to log in after the change. A simple standalone example: import ldap LDAP_URI = 'ldap://example.com:389/' ldapo = ldap.initialize(LDAP_URI) ldapo.set_option(ldap.OPT_PROTOCOL_VERSION, '3') import pdb Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: an integer is required I used "import pdb" as an example to trigger the bug, but it can be just about anything.