mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-05 13:40:08 +08:00
Fix: ldapadd with undefined objectclass causes assertion failure (ITS#3097)
This commit is contained in:
parent
2320192db0
commit
cd84c58d4a
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 ) ) {
|
||||
|
Loading…
Reference in New Issue
Block a user