View | Details | Raw Unified | Return to bug 40129 | Differences between
and this patch

Collapse All | Expand All

(-)a/management/univention-directory-manager-modules/modules/univention/admin/filter.py (-10 / +3 lines)
 Lines 32-50    Link Here 
32
32
33
import re
33
import re
34
import types
34
import types
35
import ldap.filter
35
import univention.admin.uexceptions
36
import univention.admin.uexceptions
36
37
37
def escapeForLdapFilter(txt):
38
def escapeForLdapFilter(txt):
38
	"""Escape LDAP filter value.
39
	"""Escape LDAP filter value."""
39
	Bug #19976: According to RFC2254 [*()\\\0] must be \\%02x encoded.
40
	return ldap.filter.escape_filter_chars(txt)
40
41
	>>> escapeForLdapFilter('key=value')
42
	'key=value'
43
	>>> escapeForLdapFilter('description=Number (1)')
44
	'description=Number \\\\281\\\\29'
45
	"""
46
	# parenthesis mess up ldap filters - they should be escaped
47
	return txt.replace('(', '\(').replace(')', '\)').replace('\\', '\\\\')
48
41
49
class conjunction:
42
class conjunction:
50
	"""LDAP filter conjunction (&) or disjunction (|)."""
43
	"""LDAP filter conjunction (&) or disjunction (|)."""
(-)a/base/univention-python/modules/uldap.py (-13 / +6 lines)
 Lines 32-37    Link Here 
32
32
33
import ldap
33
import ldap
34
import ldap.schema
34
import ldap.schema
35
import ldap.dn
35
import univention.debug
36
import univention.debug
36
from univention.config_registry import ConfigRegistry
37
from univention.config_registry import ConfigRegistry
37
from ldapurl import LDAPUrl
38
from ldapurl import LDAPUrl
 Lines 43-64   def _extend_uniq(list1, list2): Link Here 
43
			list1.append(item)
44
			list1.append(item)
44
45
45
def parentDn(dn, base=''):
46
def parentDn(dn, base=''):
46
	_d=univention.debug.function('uldap.parentDn dn=%s base=%s' % (dn, base))
47
	univention.debug.function('uldap.parentDn dn=%s base=%s' % (dn, base))
47
	if dn == base:
48
	if dn == base:
48
		return None
49
		return
49
	pos=dn.find(',')+1
50
	dn = ldap.dn.str2dn(dn)
50
	if pos == 0:
51
	return ldap.dn.dn2str(dn[1:])
51
		return None
52
	return dn[pos:]
53
52
54
def explodeDn(dn, notypes=0):
53
def explodeDn(dn, notypes=0):
55
	if not dn:
54
	return ldap.dn.explode_dn(dn, notypes)
56
		return []
57
58
	exploded_dn=dn.split(',')
59
	if notypes:
60
		return map(lambda(x): x[x.find('=')+1:], exploded_dn)
61
	return exploded_dn
62
55
63
def getAdminConnection(start_tls=2, decode_ignorelist=[], reconnect=True):
56
def getAdminConnection(start_tls=2, decode_ignorelist=[], reconnect=True):
64
	ucr = ConfigRegistry()
57
	ucr = ConfigRegistry()

Return to bug 40129