mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-12 10:54:48 +08:00
append trailing slash to AD canonical if DN is exactly a domain (ITS#3000)
This commit is contained in:
parent
87a4c01b29
commit
df312502ac
@ -3227,6 +3227,8 @@ int ldap_dn2bv_x( LDAPDN dn, struct berval *bv, unsigned flags, void *ctx )
|
||||
break;
|
||||
|
||||
case LDAP_DN_FORMAT_AD_CANONICAL: {
|
||||
int trailing_slash = 1;
|
||||
|
||||
/*
|
||||
* Sort of UFN for DCE DNs: a slash ('/') separated
|
||||
* global->local DN with no types; strictly speaking,
|
||||
@ -3251,7 +3253,7 @@ int ldap_dn2bv_x( LDAPDN dn, struct berval *bv, unsigned flags, void *ctx )
|
||||
len += rdnl;
|
||||
}
|
||||
|
||||
if ( ( bv->bv_val = LDAP_MALLOCX( len + 1, ctx ) ) == NULL ) {
|
||||
if ( ( bv->bv_val = LDAP_MALLOCX( len + 2, ctx ) ) == NULL ) {
|
||||
rc = LDAP_NO_MEMORY;
|
||||
break;
|
||||
}
|
||||
@ -3260,6 +3262,8 @@ int ldap_dn2bv_x( LDAPDN dn, struct berval *bv, unsigned flags, void *ctx )
|
||||
if ( iRDN && dn2domain( dn, bv, 0, &iRDN ) != 0 ) {
|
||||
for ( l = bv->bv_len; iRDN >= 0 ; iRDN-- ) {
|
||||
ber_len_t rdnl;
|
||||
|
||||
trailing_slash = 0;
|
||||
|
||||
if ( rdn2ADstr( dn[ iRDN ], &bv->bv_val[ l ],
|
||||
flags, &rdnl, 0 ) ) {
|
||||
@ -3301,9 +3305,15 @@ int ldap_dn2bv_x( LDAPDN dn, struct berval *bv, unsigned flags, void *ctx )
|
||||
}
|
||||
}
|
||||
|
||||
if ( trailing_slash ) {
|
||||
bv->bv_val[ len ] = '/';
|
||||
len++;
|
||||
}
|
||||
|
||||
bv->bv_len = len;
|
||||
bv->bv_val[ bv->bv_len ] = '\0';
|
||||
|
||||
|
||||
rc = LDAP_SUCCESS;
|
||||
} break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user