From 2c982279d570364fd7a18a0ded1f77aea3425e7f Mon Sep 17 00:00:00 2001 From: Peter Foley Date: Sat, 14 Nov 2015 09:40:03 -0500 Subject: [PATCH] Add escape_filter_chars function Allows for properly escaping arbitrary input to properly conform to RFC4515. Based on ldap.filter.escape_filter_chars from the python-ldap library. --- ldap3/utils/conv.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ldap3/utils/conv.py b/ldap3/utils/conv.py index 8ce7d76e7..29a607c16 100644 --- a/ldap3/utils/conv.py +++ b/ldap3/utils/conv.py @@ -31,6 +31,15 @@ from ..core.exceptions import LDAPDefinitionError +def escape_filter_chars(text): + """ Escape chars mentioned in RFC4515. """ + output = text.replace('\\', r'\5c') + output = output.replace(r'*', r'\2a') + output = output.replace(r'(', r'\28') + output = output.replace(r')', r'\29') + output = output.replace('\x00', r'\00') + return output + def escape_bytes(bytes_value): if bytes_value: if str != bytes: # Python 3