diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-05-12 08:26:26 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:16:40 -0500 |
commit | c956f4f98205c376062c4d634fd4ba4fb41031e4 (patch) | |
tree | 88b53e6c8bf0cd97e0dee6dcad52a7145567bb94 /source4/libcli/ldap/ldap.c | |
parent | ea6943ec79729800c520daed8d4128f1d4530a93 (diff) | |
download | samba-c956f4f98205c376062c4d634fd4ba4fb41031e4.tar.gz samba-c956f4f98205c376062c4d634fd4ba4fb41031e4.tar.bz2 samba-c956f4f98205c376062c4d634fd4ba4fb41031e4.zip |
r6745: - escape spaces in binary ldap blobs
- expose the ldap filter string parsing outside of ldap.c
(This used to be commit b644ff6fe164fbe359c47e4d34f5ad490ff61d5b)
Diffstat (limited to 'source4/libcli/ldap/ldap.c')
-rw-r--r-- | source4/libcli/ldap/ldap.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/source4/libcli/ldap/ldap.c b/source4/libcli/ldap/ldap.c index 1a4f323ebf..9a8a7bb589 100644 --- a/source4/libcli/ldap/ldap.c +++ b/source4/libcli/ldap/ldap.c @@ -150,7 +150,7 @@ static const char *ldap_binary_encode(TALLOC_CTX *mem_ctx, DATA_BLOB blob) char *ret; int len = blob.length; for (i=0;i<blob.length;i++) { - if (!isprint(blob.data[i]) || blob.data[i] == '\\') { + if (!isprint(blob.data[i]) || strchr(" *()\\&|!", blob.data[i])) { len += 2; } } @@ -159,7 +159,7 @@ static const char *ldap_binary_encode(TALLOC_CTX *mem_ctx, DATA_BLOB blob) len = 0; for (i=0;i<blob.length;i++) { - if (!isprint(blob.data[i]) || blob.data[i] == '\\') { + if (!isprint(blob.data[i]) || strchr(" *()\\&|!", blob.data[i])) { snprintf(ret+len, 4, "\\%02X", blob.data[i]); len += 3; } else { @@ -318,7 +318,7 @@ static struct ldap_parse_tree *ldap_parse_filtercomp(TALLOC_CTX *mem_ctx, <filter> ::= '(' <filtercomp> ')' */ static struct ldap_parse_tree *ldap_parse_filter(TALLOC_CTX *mem_ctx, - const char **s) + const char **s) { char *l, *s2; const char *p, *p2; @@ -1335,3 +1335,13 @@ BOOL ldap_parse_basic_url(TALLOC_CTX *mem_ctx, const char *url, } + +/* + externally callable version of filter string parsing - used in the + cldap server +*/ +struct ldap_parse_tree *ldap_parse_filter_string(TALLOC_CTX *mem_ctx, + const char *s) +{ + return ldap_parse_filter(mem_ctx, &s); +} |