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;