Skip to content

Commit 274d826

Browse files
tiranencukou
authored andcommitted
Better hack: filterstr=None
Signed-off-by: Christian Heimes <cheimes@redhat.com>
1 parent e56f617 commit 274d826

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

Doc/reference/ldap.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,10 @@ and wait for and return with the server's result, or with
10681068
or :py:meth:`search_ext_s()` (client-side search limit). If non-zero
10691069
not more than *sizelimit* results are returned by the server.
10701070

1071+
.. versionchanged:: 3.0
10711072

1073+
``filterstr=None`` is equal to ``filterstr='(objectClass=*)'``.
1074+
10721075

10731076
.. py:method:: LDAPObject.start_tls_s() -> None
10741077

Lib/ldap/ldapobject.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ def result4(self,msgid=ldap.RES_ANY,all=1,timeout=None,add_ctrls=0,add_intermedi
748748
resp_data = self._bytesify_results(resp_data, with_ctrls=add_ctrls)
749749
return resp_type, resp_data, resp_msgid, decoded_resp_ctrls, resp_name, resp_value
750750

751-
def search_ext(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
751+
def search_ext(self,base,scope,filterstr=None,attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
752752
"""
753753
search(base, scope [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]]) -> int
754754
search_s(base, scope [,filterstr='(objectClass=*)' [,attrlist=None [,attrsonly=0]]])
@@ -793,17 +793,24 @@ def search_ext(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrson
793793
The amount of search results retrieved can be limited with the
794794
sizelimit parameter if non-zero.
795795
"""
796+
796797
if PY2:
797798
base = self._bytesify_input('base', base)
798-
# workaround for default argument,
799-
# see https://github.com/python-ldap/python-ldap/issues/147
800-
if self.bytes_mode and filterstr == '(objectClass=*)':
801-
filterstr = b'(objectClass=*)'
799+
if filterstr is None:
800+
# workaround for default argument,
801+
# see https://github.com/python-ldap/python-ldap/issues/147
802+
if self.bytes_mode:
803+
filterstr = b'(objectClass=*)'
804+
else:
805+
filterstr = u'(objectClass=*)'
802806
else:
803807
filterstr = self._bytesify_input('filterstr', filterstr)
804808
if attrlist is not None:
805809
attrlist = tuple(self._bytesify_input('attrlist', a)
806810
for a in attrlist)
811+
else:
812+
if filterstr is None:
813+
filterstr = '(objectClass=*)'
807814
return self._ldap_call(
808815
self._l.search_ext,
809816
base,scope,filterstr,
@@ -813,17 +820,17 @@ def search_ext(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrson
813820
timeout,sizelimit,
814821
)
815822

816-
def search_ext_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
823+
def search_ext_s(self,base,scope,filterstr=None,attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1,sizelimit=0):
817824
msgid = self.search_ext(base,scope,filterstr,attrlist,attrsonly,serverctrls,clientctrls,timeout,sizelimit)
818825
return self.result(msgid,all=1,timeout=timeout)[1]
819826

820-
def search(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
827+
def search(self,base,scope,filterstr=None,attrlist=None,attrsonly=0):
821828
return self.search_ext(base,scope,filterstr,attrlist,attrsonly,None,None)
822829

823-
def search_s(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0):
830+
def search_s(self,base,scope,filterstr=None,attrlist=None,attrsonly=0):
824831
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
825832

826-
def search_st(self,base,scope,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,timeout=-1):
833+
def search_st(self,base,scope,filterstr=None,attrlist=None,attrsonly=0,timeout=-1):
827834
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout)
828835

829836
def start_tls_s(self):
@@ -910,7 +917,7 @@ def search_subschemasubentry_s(self,dn=None):
910917
dn = empty_dn
911918
try:
912919
r = self.search_s(
913-
dn,ldap.SCOPE_BASE,'(objectClass=*)',[attrname]
920+
dn,ldap.SCOPE_BASE,None,[attrname]
914921
)
915922
except (ldap.NO_SUCH_OBJECT,ldap.NO_SUCH_ATTRIBUTE,ldap.INSUFFICIENT_ACCESS):
916923
r = []
@@ -943,7 +950,7 @@ def read_s(self,dn,filterstr=None,attrlist=None,serverctrls=None,clientctrls=Non
943950
r = self.search_ext_s(
944951
dn,
945952
ldap.SCOPE_BASE,
946-
filterstr or '(objectClass=*)',
953+
filterstr,
947954
attrlist=attrlist,
948955
serverctrls=serverctrls,
949956
clientctrls=clientctrls,
@@ -977,7 +984,7 @@ def read_subschemasubentry_s(self,subschemasubentry_dn,attrs=None):
977984
else:
978985
return subschemasubentry
979986

980-
def find_unique_entry(self,base,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass=*)',attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1):
987+
def find_unique_entry(self,base,scope=ldap.SCOPE_SUBTREE,filterstr=None,attrlist=None,attrsonly=0,serverctrls=None,clientctrls=None,timeout=-1):
981988
"""
982989
Returns a unique entry, raises exception if not unique
983990
"""
@@ -996,7 +1003,7 @@ def find_unique_entry(self,base,scope=ldap.SCOPE_SUBTREE,filterstr='(objectClass
9961003
raise NO_UNIQUE_ENTRY('No or non-unique search result for %s' % (repr(filterstr)))
9971004
return r[0]
9981005

999-
def read_rootdse_s(self, filterstr='(objectClass=*)', attrlist=None):
1006+
def read_rootdse_s(self, filterstr=None, attrlist=None):
10001007
"""
10011008
convenience wrapper around read_s() for reading rootDSE
10021009
"""

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy