ldap/servers/slapd/util.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
New commits: commit 286559dac7a968faa0102f0165ba56892795b269 Author: Noriko Hosoi nhosoi@redhat.com Date: Fri Jun 27 12:51:30 2014 -0700
Ticket #47750 - Creating a glue fails if one above level is a conflict or missing
Bug description: https://fedorahosted.org/389/ticket/47750#comment:16
Fix description: The logic in slapi_is_special_rdn to check if the RDN is a tombstone or not had a problem. Even if the first part of RDN is not nsuniqueid=<UNIQUE_ID>, it was returning true. In this patch, code to check the case is added and it returns false if the first part of RDN is not nsuniqueid=<UNIQUE_ID>.
Reviewed by mreynolds@redhat.com and rmeggins@redhat.com (Thank you, Mark and Rich!!)
diff --git a/ldap/servers/slapd/util.c b/ldap/servers/slapd/util.c index 4c23af2..3690bf7 100644 --- a/ldap/servers/slapd/util.c +++ b/ldap/servers/slapd/util.c @@ -1475,7 +1475,7 @@ slapi_is_special_rdn(const char *rdn, int flag) } rp = (char *)rdn; while (rp) { - char *comma = NULL; + char *endp = NULL; if (!PL_strncasecmp(rp, SLAPI_ATTR_UNIQUEID, SLAPI_ATTR_UNIQUEID_LENGTH) && (*(rp + SLAPI_ATTR_UNIQUEID_LENGTH) == '=')) { if (RDN_IS_TOMBSTONE == flag) { @@ -1492,10 +1492,17 @@ slapi_is_special_rdn(const char *rdn, int flag) return 1; } } + } else if (RDN_IS_TOMBSTONE == flag) { + /* If the first part of rdn does not start with SLAPI_ATTR_UNIQUEID, + * it's not a tombstone RDN. */ + return 0; + } + endp = PL_strchr(rp, ','); + if (!endp) { + endp = rp + strlen(rp); } - comma = PL_strchr(rp, ','); rp = PL_strchr(rp, '+'); - if (rp && (rp < comma)) { + if (rp && (rp < endp)) { plus = 1; rp++; }
389-commits@lists.fedoraproject.org