[python-ldap] [BUG] KeyError on 'errno'
Michael Ströder
michael at stroeder.com
Thu May 25 05:16:38 EDT 2017
Matt Bosworth wrote:
> It looks like this might be a regression that snuck back in over the last couple
> weeks?
>
> I just updated to the latest version of python-ldap (2.4.38), django-auth-ldap
> (1.2.12), and django (1.11.1) and now successful LDAP authentication raises an Exception
> (full stack trace below).
>
> Rolling back to 2.4.37 fixes the issue.
Hmm, are you sure with the versions?
I'm asking because there wasn't any change in Lib/ldap/ from 2.4.37 to 2.4.38 (check
CHANGES):
---------------------------------- snip ------------------------------------
$ diff -ur python-ldap-2.4.37/Lib/ldap python-ldap-2.4.38/Lib/ldap
diff -ur python-ldap-2.4.37/Lib/ldap/__init__.py python-ldap-2.4.38/Lib/ldap/__init__.py
--- python-ldap-2.4.37/Lib/ldap/__init__.py 2017-04-26 22:48:43.000000000 +0200
+++ python-ldap-2.4.38/Lib/ldap/__init__.py 2017-04-27 13:11:01.000000000 +0200
@@ -3,12 +3,12 @@
See http://www.python-ldap.org/ for details.
-$Id: __init__.py,v 1.115 2017/04/26 20:48:43 stroeder Exp $
+$Id: __init__.py,v 1.116 2017/04/27 11:11:01 stroeder Exp $
"""
# This is also the overall release version number
-__version__ = '2.4.37'
+__version__ = '2.4.38'
import sys
---------------------------------- snip ------------------------------------
> Traceback:
> [..]
> "/Users/bosworth/Documents/git/RtDjango/venv-py27/lib/python2.7/site-packages/ldap/ldapobject.py"
> in _ldap_call
> 273. e.args[0]['info'] = strerror(e.args[0]['errno'])
>
> Exception Type: KeyError at /login/
> Exception Value: u'errno'
The error you experienced was fixed in 2.4.37 as noted in CHANGES (see the Lib/ldap/ diff
from 2.4.35 to 2.4.38 attached below). Are you sure that you have tested a clean
installation of 2.4.38 in your virtualenv? I suspect that your downgrade to 2.4.37 has
overwritten some left-overs from 2.4.35 installation.
Ciao, Michael.
---------------------------------- snip ------------------------------------
--- python-ldap-2.4.35/Lib/ldap/__init__.py 2017-04-25 15:52:48.000000000 +0200
+++ python-ldap-2.4.38/Lib/ldap/__init__.py 2017-04-27 13:11:01.000000000 +0200
@@ -3,12 +3,12 @@
See http://www.python-ldap.org/ for details.
-$Id: __init__.py,v 1.113 2017/04/25 13:52:48 stroeder Exp $
+$Id: __init__.py,v 1.116 2017/04/27 11:11:01 stroeder Exp $
"""
# This is also the overall release version number
-__version__ = '2.4.35'
+__version__ = '2.4.38'
import sys
diff -ur python-ldap-2.4.35/Lib/ldap/ldapobject.py python-ldap-2.4.38/Lib/ldap/ldapobject.py
--- python-ldap-2.4.35/Lib/ldap/ldapobject.py 2017-04-25 15:44:47.000000000 +0200
+++ python-ldap-2.4.38/Lib/ldap/ldapobject.py 2017-04-27 10:40:10.000000000 +0200
@@ -3,7 +3,7 @@
See http://www.python-ldap.org/ for details.
-\$Id: ldapobject.py,v 1.160 2017/04/25 13:40:52 stroeder Exp $
+\$Id: ldapobject.py,v 1.162 2017/04/27 08:40:10 stroeder Exp $
Compability:
- Tested with Python 2.0+ but should work with Python 1.5.x
@@ -111,9 +111,9 @@
diagnostic_message_success = self._l.get_option(ldap.OPT_DIAGNOSTIC_MESSAGE)
finally:
self._ldap_object_lock.release()
- except LDAPError,e:
- if 'info' not in e.args[0]:
- e.args[0]['info'] = strerror(e.args[0]['errno'])
+ except LDAPError, e:
+ if not e.args[0].has_key('info') and e.args[0].has_key('errno'):
+ e.args[0]['info'] = strerror(e.args[0]['errno'])
if __debug__ and self._trace_level>=2:
self._trace_file.write('=> LDAPError - %s: %s\n' % (e.__class__.__name__,str(e)))
raise
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3829 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mail.python.org/pipermail/python-ldap/attachments/20170525/c1e14389/attachment-0001.bin>
More information about the python-ldap
mailing list