static struct berval supportedFeatures[] = {
BER_BVC(LDAP_FEATURE_ALL_OPERATIONAL_ATTRS), /* all Operational Attributes ("+") */
BER_BVC(LDAP_FEATURE_OBJECTCLASS_ATTRS), /* OCs in Attributes List */
static struct berval supportedFeatures[] = {
BER_BVC(LDAP_FEATURE_ALL_OPERATIONAL_ATTRS), /* all Operational Attributes ("+") */
BER_BVC(LDAP_FEATURE_OBJECTCLASS_ATTRS), /* OCs in Attributes List */
= slap_schema.si_ad_objectClass;
AttributeDescription *ad_namingContexts
= slap_schema.si_ad_namingContexts;
= slap_schema.si_ad_objectClass;
AttributeDescription *ad_namingContexts
= slap_schema.si_ad_namingContexts;
AttributeDescription *ad_supportedExtension
= slap_schema.si_ad_supportedExtension;
AttributeDescription *ad_supportedLDAPVersion
AttributeDescription *ad_supportedExtension
= slap_schema.si_ad_supportedExtension;
AttributeDescription *ad_supportedLDAPVersion
- if( attr_merge( e, ad_structuralObjectClass, vals ) )
+ if( attr_merge( e, ad_structuralObjectClass, vals, NULL ) )
return LDAP_OTHER;
for ( i = 0; i < nbackends; i++ ) {
if ( backends[i].be_flags & SLAP_BFLAG_MONITOR ) {
vals[0] = backends[i].be_suffix[0];
return LDAP_OTHER;
for ( i = 0; i < nbackends; i++ ) {
if ( backends[i].be_flags & SLAP_BFLAG_MONITOR ) {
vals[0] = backends[i].be_suffix[0];
- if( attr_merge( e, ad_monitorContext, vals ) )
+ nvals[0] = backends[i].be_nsuffix[0];
+ if( attr_merge( e, ad_monitorContext, vals, nvals ) )
+ {
- if( attr_merge( e, ad_namingContexts, vals ) )
+ nvals[0] = backends[i].be_nsuffix[0];
+ if( attr_merge( e, ad_namingContexts, vals, nvals ) )
+ {
- for ( i=0; (vals[0].bv_val = get_supported_ctrl(i)) != NULL; i++ ) {
- vals[0].bv_len = strlen( vals[0].bv_val );
- if( attr_merge( e, ad_supportedControl, vals ) )
- return LDAP_OTHER;
+ if ( controls_root_dse_info( e ) != 0 ) {
+ return LDAP_OTHER;
- if( attr_merge( e, ad_supportedExtension, vals ) )
+ if( attr_merge( e, ad_supportedExtension, vals, NULL ) )
+ {
- attr_merge( e, ad_supportedExtension, vals );
+ if( attr_merge( e, ad_supportedExtension, vals, NULL ))
+ {
+ return LDAP_OTHER;
+ }
- if( attr_merge( e, ad_supportedFeatures, supportedFeatures ) )
+ if( attr_merge( e, ad_supportedFeatures,
+ supportedFeatures, NULL ) )
+ {
snprintf(buf, sizeof buf, "%d", i);
vals[0].bv_val = buf;
vals[0].bv_len = strlen( vals[0].bv_val );
snprintf(buf, sizeof buf, "%d", i);
vals[0].bv_val = buf;
vals[0].bv_len = strlen( vals[0].bv_val );
- if( attr_merge( e, ad_supportedLDAPVersion, vals ) )
+ if( attr_merge( e, ad_supportedLDAPVersion, vals, NULL ) )
+ {
for ( i=0; supportedSASLMechanisms[i] != NULL; i++ ) {
vals[0].bv_val = supportedSASLMechanisms[i];
vals[0].bv_len = strlen( vals[0].bv_val );
for ( i=0; supportedSASLMechanisms[i] != NULL; i++ ) {
vals[0].bv_val = supportedSASLMechanisms[i];
vals[0].bv_len = strlen( vals[0].bv_val );
- if( attr_merge( e, ad_supportedSASLMechanisms, vals ) )
+ if( attr_merge( e, ad_supportedSASLMechanisms, vals, NULL ) )
+ {
- if( attr_merge( e, ad_ref, default_referral ) )
+ if( attr_merge( e, ad_ref, default_referral, NULL /* FIXME */ ) )
+ {
- if( attr_merge( e, a->a_desc, a->a_vals ) )
+ if( attr_merge( e, a->a_desc, a->a_vals,
+ (a->a_nvals == a->a_vals) ? NULL : a->a_nvals ) )
+ {
Debug( LDAP_DEBUG_ANY,
"read_root_dse_file: SLAP_CALLOC failed", 0, 0, 0 );
#endif
Debug( LDAP_DEBUG_ANY,
"read_root_dse_file: SLAP_CALLOC failed", 0, 0, 0 );
#endif
- if( attr_merge( usr_attr, a->a_desc, a->a_vals ) )
- return LDAP_OTHER;
+ if( attr_merge( usr_attr, a->a_desc, a->a_vals,
+ (a->a_nvals == a->a_vals) ? NULL : a->a_nvals ) )
+ {
+ rc = LDAP_OTHER;
+ break;
+ }
Debug(LDAP_DEBUG_CONFIG, "rootDSE file %s read.\n", fname, 0, 0);
return rc;
}
Debug(LDAP_DEBUG_CONFIG, "rootDSE file %s read.\n", fname, 0, 0);
return rc;
}