int *err,
const char **errmsg )
{
+ int rc;
char *dn;
+ struct berval *ndn = NULL;
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 = dnNormalize( NULL, a->a_vals[0], &ndn );
+ if( rc != LDAP_SUCCESS ) {
*err = LDAP_ALIAS_PROBLEM;
*errmsg = "alias aliasedObjectName value is invalid";
return NULL;
}
+ dn = ndn->bv_val;
+ free( ndn );
return dn;
}
const char *dn
)
{
- char *ndn;
- ID id;
+ int rc;
+ struct berval bv;
+ struct berval *ndn = NULL;
+ ID id;
- ndn = ch_strdup( dn );
- (void) dn_normalize( ndn );
+ bv.bv_val = dn;
+ bv.bv_len = strlen( dn );
- id = cache_find_entry_ndn2id( be, cache, ndn );
+ rc = dnNormalize( NULL, &bv, &ndn );
+ if( rc != LDAP_SUCCESS ) {
+ return NOID;
+ }
- free( ndn );
+ id = cache_find_entry_ndn2id( be, cache, ndn->bv_val );
+ ber_bvfree( ndn );
return ( id );
}