Commit 6e8ee224 authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

import fix to ITS#5088

parent dae572da
......@@ -11,6 +11,7 @@ OpenLDAP 2.3.38 Engineering
Fixed slapd-bdb spurious empty DN warnings during add (ITS#5079)
Fixed slapd-hdb slapacl behavior (ITS#5087)
Fixed slapd-relay configuration (ITS#4322,ITS#4340)
Fixed slapd-sql structuralObjectClass issue (ITS#5088)
Fixed slapo-syncprov uninit'd vars (ITS#5048,#5049)
Fixed libldap ldap_add_result_entry (ITS#5056)
Removed lint
......
......@@ -1002,12 +1002,14 @@ next:;
|| an_find( bsi->bsi_attrs, &AllOper )
|| an_find( bsi->bsi_attrs, &slap_schema.si_ad_structuralObjectClass->ad_cname ) )
{
ObjectClass *soc = NULL;
if ( BACKSQL_CHECK_SCHEMA( bi ) ) {
Attribute *a;
const char *text = NULL;
char textbuf[ 1024 ];
size_t textlen = sizeof( textbuf );
struct berval soc,
struct berval soc_name,
bv[ 2 ],
*nvals;
int rc = LDAP_SUCCESS;
......@@ -1023,7 +1025,7 @@ next:;
nvals = bv;
}
rc = structural_class( nvals, &soc, NULL,
rc = structural_class( nvals, &soc_name, &soc,
&text, textbuf, textlen );
if ( rc != LDAP_SUCCESS ) {
Debug( LDAP_DEBUG_TRACE, "backsql_id2entry(%s): "
......@@ -1034,21 +1036,33 @@ next:;
return rc;
}
if ( !bvmatch( &soc, &bsi->bsi_oc->bom_oc->soc_cname ) ) {
if ( !bvmatch( &soc->soc_cname, &bsi->bsi_oc->bom_oc->soc_cname ) ) {
if ( !is_object_subclass( bsi->bsi_oc->bom_oc, soc ) ) {
Debug( LDAP_DEBUG_TRACE, "backsql_id2entry(%s): "
"computed structuralObjectClass %s "
"does not match objectClass %s associated "
"to entry\n",
bsi->bsi_e->e_name.bv_val, soc->soc_cname.bv_val,
bsi->bsi_oc->bom_oc->soc_cname.bv_val );
backsql_entry_clean( op, bsi->bsi_e );
return rc;
}
Debug( LDAP_DEBUG_TRACE, "backsql_id2entry(%s): "
"computed structuralObjectClass %s "
"does not match objectClass %s associated "
"is subclass of objectClass %s associated "
"to entry\n",
bsi->bsi_e->e_name.bv_val, soc.bv_val,
bsi->bsi_e->e_name.bv_val, soc->soc_cname.bv_val,
bsi->bsi_oc->bom_oc->soc_cname.bv_val );
backsql_entry_clean( op, bsi->bsi_e );
return rc;
}
} else {
soc = bsi->bsi_oc->bom_oc;
}
rc = attr_merge_normalize_one( bsi->bsi_e,
slap_schema.si_ad_structuralObjectClass,
&bsi->bsi_oc->bom_oc->soc_cname,
&soc->soc_cname,
bsi->bsi_op->o_tmpmemctx );
if ( rc != LDAP_SUCCESS ) {
backsql_entry_clean( op, bsi->bsi_e );
......
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