Skip to content
Snippets Groups Projects
Commit 275f3be3 authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Misc. DN fixes and cleanups, namely don't muck with AVA_BINARY values

Also, pass empty_bv when bv_val is NULL.
parent b2d948f0
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
case LDAP_DN_FORMAT_DCE:
} 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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment