Commit a5227fc0 authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#5681

parent 72fda170
......@@ -9,6 +9,7 @@ OpenLDAP 2.4.12 Engineering
Fixed slapd dynacl mask handling (ITS#5637)
Fixed slapd firstComponentMatch normalization (ITS#5634)
Added slapd caseIgnoreListMatch (ITS#5608)
Fixed slapd objectClass canonicalization (ITS#5681)
Fixed slapd overlay control registration (ITS#5649)
Fixed slapd socket closing on Windows (ITS#5606)
Fixed slapd sortvals comparison (ITS#5578)
......
......@@ -713,11 +713,13 @@ ldap_build_entry(
}
if ( rc != LDAP_SUCCESS ) {
ObjectClass *oc;
/* check if, by chance, it's an undefined objectClass */
if ( attr->a_desc == slap_schema.si_ad_objectClass &&
oc_bvfind_undef( &attr->a_vals[i] ) != NULL )
( oc = oc_bvfind_undef( &attr->a_vals[i] ) ) != NULL )
{
ber_dupbv( &pval, &attr->a_vals[i] );
ber_dupbv( &pval, &oc->soc_cname );
} else {
attr->a_nvals = NULL;
......
......@@ -1905,6 +1905,8 @@ meta_send_entry(
struct berval *bv;
for ( bv = attr->a_vals; !BER_BVISNULL( bv ); bv++ ) {
ObjectClass *oc;
ldap_back_map( &mi->mi_targets[ target ]->mt_rwmap.rwm_oc,
bv, &mapped, BACKLDAP_REMAP );
if ( BER_BVISNULL( &mapped ) || mapped.bv_val[0] == '\0') {
......@@ -1936,6 +1938,12 @@ remove_oc:;
}
ber_bvreplace( bv, &mapped );
} else if ( ( oc = oc_bvfind_undef( bv ) ) == NULL ) {
goto remove_oc;
} else {
ber_bvreplace( bv, &oc->soc_cname );
}
}
/*
......
......@@ -228,6 +228,9 @@ oc_bvfind_undef( struct berval *ocname )
oc->soc_cname.bv_val = (char *)&oc[ 1 ];
AC_MEMCPY( oc->soc_cname.bv_val, ocname->bv_val, ocname->bv_len );
/* canonical to upper case */
ldap_pvt_str2upper( oc->soc_cname.bv_val );
LDAP_STAILQ_NEXT( oc, soc_next ) = NULL;
ldap_pvt_thread_mutex_lock( &oc_undef_mutex );
LDAP_STAILQ_INSERT_HEAD( &oc_undef_list, oc, soc_next );
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment