Entry *deref_internal_r(
Backend* be,
Entry* alias,
- const char* dn_in,
+ struct berval* dn_in,
int* err,
Entry** matched,
const char** text )
*text = NULL;
if( alias == NULL ) {
- dn = ch_strdup( dn_in );
+ dn = ch_strdup( dn_in->bv_val );
entry = dn2entry_r( be, dn, &sup );
} else {
int *err,
const char **errmsg )
{
- char *dn;
+ int rc;
+ struct berval ndn;
Attribute *a;
- AttributeDescription *aliasedObjectName = slap_schema.si_ad_aliasedObjectName;
+ AttributeDescription *aliasedObjectName
+ = slap_schema.si_ad_aliasedObjectName;
a = attr_find( e->e_attrs, aliasedObjectName );
return NULL;
}
- dn = ch_strdup( a->a_vals[0]->bv_val );
-
- if( dn_normalize(dn) == NULL ) {
- ch_free( dn );
+ rc = dnNormalize2( NULL, a->a_vals[0], &ndn );
+ if( rc != LDAP_SUCCESS ) {
*err = LDAP_ALIAS_PROBLEM;
*errmsg = "alias aliasedObjectName value is invalid";
return NULL;
}
- return dn;
+ return ndn.bv_val;
}
static char* new_superior(