From: Kurt Zeilenga Date: Tue, 20 Jul 1999 02:17:25 +0000 (+0000) Subject: Fixed slapd substring_comp_candidates null intersection bug (ITS#228) X-Git-Tag: OPENLDAP_REL_ENG_1_2_5~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c875e72b11098f2e491ae4ca5e79e68419726457;p=thirdparty%2Fopenldap.git Fixed slapd substring_comp_candidates null intersection bug (ITS#228) Fixed slapd modify: delete of last attribute value bug (ITS#229) --- diff --git a/CHANGES b/CHANGES index f99eda8fe9..27afa9f031 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,8 @@ OpenLDAP Change Log Changes included in OpenLDAP 1.2 Release Engineering CVS Tag: OPENLDAP_REL_ENG_1_2 + Fixed slapd substring_comp_candidates null intersection bug (ITS#228) + Fixed slapd modify: delete of last attribute value bug (ITS#229) Build environment Updated Autoconf 2.13 config.guess/config.sub Don't use "ln -s -f file link" (ITS#227) diff --git a/servers/slapd/back-ldbm/filterindex.c b/servers/slapd/back-ldbm/filterindex.c index 5ad17dc0e1..2b304d104a 100644 --- a/servers/slapd/back-ldbm/filterindex.c +++ b/servers/slapd/back-ldbm/filterindex.c @@ -345,6 +345,11 @@ substring_comp_candidates( idl_free( tmp ); idl_free( tmp2 ); } + + /* break if no candidates */ + if( idl == NULL ) { + break; + } } Debug( LDAP_DEBUG_TRACE, "<= substring_comp_candidates %lu\n", diff --git a/servers/slapd/back-ldbm/modify.c b/servers/slapd/back-ldbm/modify.c index 04e12383c8..e0f2e2330e 100644 --- a/servers/slapd/back-ldbm/modify.c +++ b/servers/slapd/back-ldbm/modify.c @@ -324,6 +324,17 @@ delete_values( a->a_vals[k - 1] = a->a_vals[k]; } a->a_vals[k - 1] = NULL; + + /* delete the entire attribute, if no values remain */ + if ( a->a_vals[0] == NULL) { + Debug( LDAP_DEBUG_ARGS, + "removing entire attribute %s\n", + mod->mod_type, 0, 0 ); + if ( attr_delete( &e->e_attrs, mod->mod_type ) ) { + return LDAP_NO_SUCH_ATTRIBUTE; + } + } + break; }