Skip to content

Commit 3815496

Browse files
committed
Handle empty search results w/references
If a search result is empty but there are result reference locations that are returned, then the current code will return invalid information or throw an AttributeError. Address issue #70. The search result would be in the format a dn string and then a dictionary containing the proper information about the user, but when the search is empty you just end up with the search references as shown below, and obviously the second item in each tuple is not a dict: [(None, ['ldap://ForestDnsZones.mycompany.com/DC=ForestDnsZones,DC=mycompany,DC=com']), (None, ['ldap://DomainDnsZones.mycompany.com/DC=DomainDnsZones,DC=mycompany,DC=com']), (None, ['ldap://mycompany.com/CN=Configuration,DC=mycompany,DC=com'])] A successful search looks something like this: [('CN=My Name,OU=Users,OU=Accounts,DC=mycompany,DC=com', {'accountExpires': [b'9223372036854775807'], 'cn': [b'First Last'], 'userPrincipalName': [b'[email protected]'], 'whenChanged': [b'20210119003635.0Z'], 'whenCreated': [b'20201005164610.0Z']}), (None, ['ldap://ForestDnsZones.mycompany.com/DC=ForestDnsZones,DC=mycompany,DC=com']), (None, ['ldap://DomainDnsZones.mycompany.com/DC=DomainDnsZones,DC=mycompany,DC=com']), (None, ['ldap://mycompany.com/CN=Configuration,DC=mycompany,DC=com'])] Signed-off-by: Fred Thomsen <[email protected]>
1 parent c6f63c7 commit 3815496

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

flask_simpleldap/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,8 @@ def get_object_details(self, user=None, group=None, query_filter=None,
184184
ldap.SCOPE_SUBTREE, query, fields)
185185
conn.unbind_s()
186186
result = {}
187-
if records:
187+
if records and\
188+
records[0][0] is not None and isinstance(records[0][1], dict):
188189
if dn_only:
189190
if current_app.config['LDAP_OPENLDAP']:
190191
if records:

0 commit comments

Comments
 (0)