diff options
author | Thomas Lackey <tlackey@redhat.com> | 2005-05-24 16:11:19 +0000 |
---|---|---|
committer | Thomas Lackey <tlackey@redhat.com> | 2005-05-24 16:11:19 +0000 |
commit | 7f784cc08695718fa3493fc6e3378cda60919042 (patch) | |
tree | aaeb0cd8fdbb2065db90d3f1f5606938c27814b5 /ldap/servers/slapd/entry.c | |
parent | 4dc8d51ea2acdcddf5eff03d493da3a70990d8c0 (diff) | |
download | ds-7f784cc08695718fa3493fc6e3378cda60919042.tar.gz ds-7f784cc08695718fa3493fc6e3378cda60919042.tar.xz ds-7f784cc08695718fa3493fc6e3378cda60919042.zip |
Fix bug 155276, crash if config has changed since restore.
Diffstat (limited to 'ldap/servers/slapd/entry.c')
-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", |