mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-26 09:39:45 -05:00
Misc. DN fixes and cleanups, namely don't muck with AVA_BINARY values
Also, pass empty_bv when bv_val is NULL.
This commit is contained in:
parent
b2d948f0e5
commit
275f3be363
4 changed files with 22 additions and 17 deletions
3
INSTALL
3
INSTALL
|
|
@ -31,8 +31,7 @@ Making and Installing the OpenLDAP Distribution
|
|||
|
||||
% ./configure --help
|
||||
|
||||
to list available configuration options. A description of these
|
||||
options is provided in the 'CONFIGURE OPTIONS' section below.
|
||||
to list available configuration options.
|
||||
|
||||
The configure script uses environmental variables for determining
|
||||
compiler/linker options including:
|
||||
|
|
|
|||
|
|
@ -29,5 +29,6 @@ veryclean-local: FORCE
|
|||
|
||||
distclean: veryclean FORCE
|
||||
|
||||
check: test
|
||||
test: FORCE
|
||||
cd tests; make test
|
||||
|
|
|
|||
|
|
@ -2864,7 +2864,6 @@ int ldap_dn2bv( LDAPDN *dn, struct berval *bv, unsigned flags )
|
|||
int ( *sv2s ) ( struct berval *v, char *s, unsigned f, ber_len_t *l );
|
||||
|
||||
assert( bv );
|
||||
|
||||
bv->bv_len = 0;
|
||||
bv->bv_val = NULL;
|
||||
|
||||
|
|
@ -2883,13 +2882,13 @@ int ldap_dn2bv( LDAPDN *dn, struct berval *bv, unsigned flags )
|
|||
case LDAP_DN_FORMAT_LDAPV3:
|
||||
sv2l = strval2strlen;
|
||||
sv2s = strval2str;
|
||||
goto got_funcs;
|
||||
|
||||
if( 0 ) {
|
||||
case LDAP_DN_FORMAT_LDAPV2:
|
||||
sv2l = strval2IA5strlen;
|
||||
sv2s = strval2IA5str;
|
||||
got_funcs:
|
||||
|
||||
sv2l = strval2IA5strlen;
|
||||
sv2s = strval2IA5str;
|
||||
}
|
||||
|
||||
for ( iRDN = 0, len = 0; dn[ 0 ][ iRDN ]; iRDN++ ) {
|
||||
ber_len_t rdnl;
|
||||
LDAPRDN *rdn = dn[ 0 ][ iRDN ];
|
||||
|
|
@ -2932,7 +2931,6 @@ got_funcs:
|
|||
break;
|
||||
|
||||
case LDAP_DN_FORMAT_UFN: {
|
||||
|
||||
/*
|
||||
* FIXME: quoting from RFC 1781:
|
||||
*
|
||||
|
|
@ -3047,11 +3045,10 @@ got_funcs:
|
|||
#endif /* DC_IN_UFN */
|
||||
|
||||
rc = LDAP_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
} break;
|
||||
|
||||
case LDAP_DN_FORMAT_DCE:
|
||||
|
||||
for ( iRDN = 0, len = 0; dn[ 0 ][ iRDN ]; iRDN++ ) {
|
||||
ber_len_t rdnl;
|
||||
LDAPRDN *rdn = dn[ 0 ][ iRDN ];
|
||||
|
|
@ -3090,7 +3087,6 @@ got_funcs:
|
|||
break;
|
||||
|
||||
case LDAP_DN_FORMAT_AD_CANONICAL: {
|
||||
|
||||
/*
|
||||
* Sort of UFN for DCE DNs: a slash ('/') separated
|
||||
* global->local DN with no types; strictly speaking,
|
||||
|
|
@ -3172,8 +3168,7 @@ got_funcs:
|
|||
bv->bv_val[ bv->bv_len ] = '\0';
|
||||
|
||||
rc = LDAP_SUCCESS;
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
|
||||
default:
|
||||
return LDAP_PARAM_ERROR;
|
||||
|
|
@ -3181,6 +3176,7 @@ got_funcs:
|
|||
|
||||
Debug( LDAP_DEBUG_TRACE, "<= ldap_dn2bv(%s,%u)=%d\n",
|
||||
bv->bv_val, flags, rc );
|
||||
|
||||
return_results:;
|
||||
return( rc );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -258,7 +258,12 @@ LDAPDN_rewrite( LDAPDN *dn, unsigned flags )
|
|||
*/
|
||||
ava->la_attr = ad->ad_cname;
|
||||
|
||||
if( flags & SLAP_LDAPDN_PRETTY ) {
|
||||
if( ava->la_flags & LDAP_AVA_BINARY ) {
|
||||
/* AVA is binary encoded, don't muck with it */
|
||||
transf = NULL;
|
||||
mr = NULL;
|
||||
|
||||
} else if( flags & SLAP_LDAPDN_PRETTY ) {
|
||||
transf = ad->ad_type->sat_syntax->ssyn_pretty;
|
||||
mr = NULL;
|
||||
} else {
|
||||
|
|
@ -269,9 +274,13 @@ LDAPDN_rewrite( LDAPDN *dn, unsigned flags )
|
|||
if ( transf ) {
|
||||
/*
|
||||
* transform value by normalize/pretty function
|
||||
* if value is empty, use empty_bv
|
||||
*/
|
||||
rc = ( *transf )( ad->ad_type->sat_syntax,
|
||||
&ava->la_value, &bv );
|
||||
ava->la_value.bv_len
|
||||
? &ava->la_value
|
||||
: (struct berval *) &slap_empty_bv,
|
||||
&bv );
|
||||
|
||||
if ( rc != LDAP_SUCCESS ) {
|
||||
return LDAP_INVALID_SYNTAX;
|
||||
|
|
|
|||
Loading…
Reference in a new issue