]> git.sur5r.net Git - openldap/commitdiff
Misc. DN fixes and cleanups, namely don't muck with AVA_BINARY values
authorKurt Zeilenga <kurt@openldap.org>
Wed, 13 Feb 2002 06:35:27 +0000 (06:35 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 13 Feb 2002 06:35:27 +0000 (06:35 +0000)
Also, pass empty_bv when bv_val is NULL.

INSTALL
Makefile.in
libraries/libldap/getdn.c
servers/slapd/dn.c

diff --git a/INSTALL b/INSTALL
index 7bd6fa56fb461c874cf605ab071bdea48b2f8072..47c24c4f028b2934865ed8fecc89da2052f4e375 100644 (file)
--- a/INSTALL
+++ b/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:
index 7d797afff3d977db1f7470cfb9f548c2b38676bb..9a2ac0afe21046e3b6526b3f1c705dc5efa0d898 100644 (file)
@@ -29,5 +29,6 @@ veryclean-local: FORCE
 
 distclean: veryclean FORCE
 
+check: test
 test: FORCE
        cd tests; make test
index 91eb163b82b7e7b5895ccb0d2abc61202e1a624d..0bb8b184ee70a149fe52091f415fa2021425082c 100644 (file)
@@ -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 );
 }
index b776e18e302518d1807c9548d960d218bbf1a633..812a2a0b09c4850a0d5fa69975e43a70a0b7f6c2 100644 (file)
@@ -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;