diff options
author | Nathan Kinder <nkinder@redhat.com> | 2005-06-01 17:50:39 +0000 |
---|---|---|
committer | Nathan Kinder <nkinder@redhat.com> | 2005-06-01 17:50:39 +0000 |
commit | 912108a825a0bcd7c3eafc27c877145bc261bb33 (patch) | |
tree | aaeb0cd8fdbb2065db90d3f1f5606938c27814b5 | |
parent | 0421c694c91c054a9a59d7d90b3e790834fc52e9 (diff) | |
download | ds-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.c | 19 |
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", |