r6745: - escape spaces in binary ldap blobs
authorAndrew Tridgell <tridge@samba.org>
Thu, 12 May 2005 08:26:26 +0000 (08:26 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:16:40 +0000 (13:16 -0500)
- expose the ldap filter string parsing outside of ldap.c

source/libcli/ldap/ldap.c
source/libcli/ldap/ldap.h

index 1a4f323ebffa46f8d1c34de94f78850554f699b6..9a8a7bb589cfeb96c17ecefd1dd851b4e1324b1a 100644 (file)
@@ -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);
+}
index 50031fd60cd45715137ece70427c9737bc9efb9e..63d79628a9c6bd78455c6de97f75494c6f055fda 100644 (file)
@@ -323,6 +323,8 @@ BOOL ldap_encode(struct ldap_message *msg, DATA_BLOB *result);
 BOOL ldap_decode(struct asn1_data *data, struct ldap_message *msg);
 BOOL ldap_parse_basic_url(TALLOC_CTX *mem_ctx, const char *url,
                          char **host, uint16_t *port, BOOL *ldaps);
+struct ldap_parse_tree *ldap_parse_filter_string(TALLOC_CTX *mem_ctx,
+                                                const char *s);
 
 /* The following definitions come from libcli/ldap/ldap_client.c  */