summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Kinder <nkinder@redhat.com>2005-06-01 17:50:39 +0000
committerNathan Kinder <nkinder@redhat.com>2005-06-01 17:50:39 +0000
commit912108a825a0bcd7c3eafc27c877145bc261bb33 (patch)
treeaaeb0cd8fdbb2065db90d3f1f5606938c27814b5
parent0421c694c91c054a9a59d7d90b3e790834fc52e9 (diff)
downloadds-912108a825a0bcd7c3eafc27c877145bc261bb33.tar.gz
ds-912108a825a0bcd7c3eafc27c877145bc261bb33.tar.xz
ds-912108a825a0bcd7c3eafc27c877145bc261bb33.zip
Merge fix for bug 155276 to 71rtm branch
-rw-r--r--ldap/servers/slapd/entry.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/ldap/servers/slapd/entry.c b/ldap/servers/slapd/entry.c
index f690e37e..bf89542c 100644
--- a/ldap/servers/slapd/entry.c
+++ b/ldap/servers/slapd/entry.c
@@ -3086,8 +3086,21 @@ slapi_entries_diff(Slapi_Entry **old_entries, Slapi_Entry **curr_entries,
{
for (cep = curr_entries; cep != NULL && *cep != NULL; )
{
- int dncmp = slapi_sdn_compare(slapi_entry_get_sdn_const(*oep),
+ int dncmp;
+ if ((*oep != NULL) && (*cep !=NULL)) {
+ dncmp = slapi_sdn_compare(slapi_entry_get_sdn_const(*oep),
slapi_entry_get_sdn_const(*cep));
+ }
+ else if (*oep==NULL) {
+ dncmp=-1; // OEP is empty, it does not have the entry.
+ }
+ else if (*cep==NULL) {
+ dncmp=1; // CEP is empty, it does not have the entry.
+ }
+ else {
+ continue; // Not sure what happened, but cannot proceed.
+ }
+
if (force_update)
{
pblock_init(&pb);
@@ -3159,7 +3172,7 @@ slapi_entries_diff(Slapi_Entry **old_entries, Slapi_Entry **curr_entries,
slapi_mods_free(&smods);
oep++; cep++;
}
- else if (dncmp > 0) /* old_entries does not have cep */
+ else if (dncmp < 0) /* old_entries does not have cep */
{
rval = 1;
@@ -3177,7 +3190,7 @@ slapi_entries_diff(Slapi_Entry **old_entries, Slapi_Entry **curr_entries,
}
cep++;
}
- else /* if (dncmp < 0) curr_entries does not have oep */
+ else /* if (dncmp > 0) curr_entries does not have oep */
{
rval = 1;
LDAPDebug(LDAP_DEBUG_ANY, "Add %sEntry %s\n",