From: Kurt Zeilenga Date: Mon, 19 Apr 2004 20:15:14 +0000 (+0000) Subject: ITS#3097 fix undefined objectclass assertion X-Git-Tag: OPENLDAP_REL_ENG_2_2_11~9 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=3aa62fea17b298f0968c3aba762fca8da65670c7;hp=001594d5adf13599eb6cad25bdb8a9a40297eca6;p=openldap ITS#3097 fix undefined objectclass assertion --- diff --git a/CHANGES b/CHANGES index a9db357422..20080713b6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,8 +1,11 @@ OpenLDAP 2.2 Change Log +OpenLDAP 2.2.11 Engineering + Fixed slapd undefined objectclass bug (ITS#3097) + OpenLDAP 2.2.10 Release Build Environment - Fix configure bug + Fix configure bug (ITS#3094) OpenLDAP 2.2.9 Release Fixed slapd syncrepl replication bugs (ITS#3055,3056,3069) diff --git a/build/version.var b/build/version.var index 5835914738..f92f946df8 100644 --- a/build/version.var +++ b/build/version.var @@ -15,7 +15,7 @@ ol_package=OpenLDAP ol_major=2 ol_minor=2 -ol_patch=10 +ol_patch=X ol_api_inc=20210 ol_api_current=7 ol_api_revision=3 diff --git a/servers/slapd/add.c b/servers/slapd/add.c index f7bcc117fd..078bd73075 100644 --- a/servers/slapd/add.c +++ b/servers/slapd/add.c @@ -501,7 +501,7 @@ slap_mods2entry( } } else { - int rc = LDAP_SUCCESS; + int rc; int match; for ( i = 1; mods->sml_values[i].bv_val != NULL; i++ ) { @@ -519,18 +519,19 @@ slap_mods2entry( ? &mods->sml_nvalues[j] : &mods->sml_values[j], text ); + if ( rc == LDAP_SUCCESS && match == 0 ) { /* value exists already */ snprintf( textbuf, textlen, "%s: value #%d provided more than once", mods->sml_desc->ad_cname.bv_val, j ); return LDAP_TYPE_OR_VALUE_EXISTS; + + } else if ( rc != LDAP_SUCCESS ) { + return rc; } } } - if ( rc != LDAP_SUCCESS ) { - return rc; - } } } diff --git a/servers/slapd/modify.c b/servers/slapd/modify.c index b9e38eb17c..eed665eda6 100644 --- a/servers/slapd/modify.c +++ b/servers/slapd/modify.c @@ -790,7 +790,7 @@ int slap_mods_check( } } else { - int rc = LDAP_SUCCESS; + int rc; int match; for ( i = 1; ml->sml_values[i].bv_val != NULL; i++ ) { @@ -815,11 +815,12 @@ int slap_mods_check( ml->sml_desc->ad_cname.bv_val, j ); *text = textbuf; return LDAP_TYPE_OR_VALUE_EXISTS; + + } else if ( rc != LDAP_SUCCESS ) { + return rc; } } } - - if ( rc != LDAP_SUCCESS ) return rc; } } diff --git a/servers/slapd/mods.c b/servers/slapd/mods.c index 7844d6381e..8d91c20327 100644 --- a/servers/slapd/mods.c +++ b/servers/slapd/mods.c @@ -110,6 +110,9 @@ modify_add_values( "modify/%s: %s: value #%d already exists", op, mod->sm_desc->ad_cname.bv_val, i ); return LDAP_TYPE_OR_VALUE_EXISTS; + + } else if ( rc != LDAP_SUCCESS ) { + return rc; } } diff --git a/servers/slapd/schema_prep.c b/servers/slapd/schema_prep.c index 79e51ed9c1..dffc3be1fd 100644 --- a/servers/slapd/schema_prep.c +++ b/servers/slapd/schema_prep.c @@ -70,12 +70,12 @@ objectSubClassMatch( } /* desc form, return undefined */ - return SLAPD_COMPARE_UNDEFINED; + return LDAP_INVALID_SYNTAX; } if ( oc == NULL ) { /* unrecognized stored value */ - return SLAPD_COMPARE_UNDEFINED; + return LDAP_INVALID_SYNTAX; } if( SLAP_MR_IS_VALUE_OF_ATTRIBUTE_SYNTAX( flags ) ) {