Author: idra
Date: 2006-01-06 21:39:37 +0000 (Fri, 06 Jan 2006)
New Revision: 12748

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12748

Log:

Fix wrong handling of separation characters for RDNs
allow escaped separation chars as part of the attr value
of an RDN


Modified:
   branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c   2006-01-06 21:20:09 UTC 
(rev 12747)
+++ branches/SAMBA_4_0/source/lib/ldb/common/ldb_dn.c   2006-01-06 21:39:37 UTC 
(rev 12748)
@@ -214,8 +214,8 @@
 
 static char *seek_to_separator(char *string, const char *separators)
 {
-       char *p;
-       int ret, qs, qe;
+       char *p, *q;
+       int ret, qs, qe, escaped;
 
        if (string == NULL || separators == NULL) return NULL;
 
@@ -242,11 +242,21 @@
        }
 
        /* no quotes found seek to separators */
-       ret = strcspn(p, separators);
-       if (ret == 0) /* no separators ?! bail out */
+       q = p;
+       do {
+               escaped = 0;
+               ret = strcspn(q, separators);
+               
+               if (q[ret - 1] == '\\') {
+                       escaped = 1;
+                       q = q + ret + 1;
+               }
+       } while (escaped);
+
+       if (ret == 0 && p == q) /* no separators ?! bail out */
                return NULL;
 
-       return p + ret;
+       return q + ret;
 
 failed:
        return NULL;

Reply via email to