diff --git a/management/univention-directory-manager-modules/modules/univention/admin/filter.py b/management/univention-directory-manager-modules/modules/univention/admin/filter.py index f94a7a1..27cdff1 100644 --- a/management/univention-directory-manager-modules/modules/univention/admin/filter.py +++ b/management/univention-directory-manager-modules/modules/univention/admin/filter.py @@ -32,19 +32,12 @@ import re import types +import ldap.filter import univention.admin.uexceptions def escapeForLdapFilter(txt): - """Escape LDAP filter value. - Bug #19976: According to RFC2254 [*()\\\0] must be \\%02x encoded. - - >>> escapeForLdapFilter('key=value') - 'key=value' - >>> escapeForLdapFilter('description=Number (1)') - 'description=Number \\\\281\\\\29' - """ - # parenthesis mess up ldap filters - they should be escaped - return txt.replace('(', '\(').replace(')', '\)').replace('\\', '\\\\') + """Escape LDAP filter value.""" + return ldap.filter.escape_filter_chars(txt) class conjunction: """LDAP filter conjunction (&) or disjunction (|)."""