]> git.sur5r.net Git - openldap/commitdiff
Protect Debug messages from NULL pointers
authorHoward Chu <hyc@openldap.org>
Sat, 1 Sep 2007 13:35:34 +0000 (13:35 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 1 Sep 2007 13:35:34 +0000 (13:35 +0000)
servers/slapd/dn.c
servers/slapd/overlays/rwmdn.c

index b71dfc95f618cabf591dce774030e5e0938392bb..f2402cbc9908c00cd7525dde45d7f0713a02ebbd 100644 (file)
@@ -439,7 +439,7 @@ dnNormalize(
        assert( val != NULL );
        assert( out != NULL );
 
-       Debug( LDAP_DEBUG_TRACE, ">>> dnNormalize: <%s>\n", val->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, ">>> dnNormalize: <%s>\n", val->bv_val ? val->bv_val : "", 0, 0 );
 
        if ( val->bv_len != 0 ) {
                LDAPDN          dn = NULL;
@@ -478,7 +478,7 @@ dnNormalize(
                ber_dupbv_x( out, val, ctx );
        }
 
-       Debug( LDAP_DEBUG_TRACE, "<<< dnNormalize: <%s>\n", out->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, "<<< dnNormalize: <%s>\n", out->bv_val ? out->bv_val : "", 0, 0 );
 
        return LDAP_SUCCESS;
 }
@@ -495,7 +495,7 @@ rdnNormalize(
        assert( val != NULL );
        assert( out != NULL );
 
-       Debug( LDAP_DEBUG_TRACE, ">>> dnNormalize: <%s>\n", val->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, ">>> dnNormalize: <%s>\n", val->bv_val ? val->bv_val : "", 0, 0 );
        if ( val->bv_len != 0 ) {
                LDAPRDN         rdn = NULL;
                int             rc;
@@ -536,7 +536,7 @@ rdnNormalize(
                ber_dupbv_x( out, val, ctx );
        }
 
-       Debug( LDAP_DEBUG_TRACE, "<<< dnNormalize: <%s>\n", out->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, "<<< dnNormalize: <%s>\n", out->bv_val ? out->bv_val : "", 0, 0 );
 
        return LDAP_SUCCESS;
 }
@@ -551,7 +551,7 @@ dnPretty(
        assert( val != NULL );
        assert( out != NULL );
 
-       Debug( LDAP_DEBUG_TRACE, ">>> dnPretty: <%s>\n", val->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, ">>> dnPretty: <%s>\n", val->bv_val ? val->bv_val : "", 0, 0 );
 
        if ( val->bv_len == 0 ) {
                ber_dupbv_x( out, val, ctx );
@@ -593,7 +593,7 @@ dnPretty(
                }
        }
 
-       Debug( LDAP_DEBUG_TRACE, "<<< dnPretty: <%s>\n", out->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, "<<< dnPretty: <%s>\n", out->bv_val ? out->bv_val : "", 0, 0 );
 
        return LDAP_SUCCESS;
 }
@@ -608,7 +608,7 @@ rdnPretty(
        assert( val != NULL );
        assert( out != NULL );
 
-       Debug( LDAP_DEBUG_TRACE, ">>> dnPretty: <%s>\n", val->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, ">>> rdnPretty: <%s>\n", val->bv_val ? val->bv_val : "", 0, 0 );
 
        if ( val->bv_len == 0 ) {
                ber_dupbv_x( out, val, ctx );
@@ -652,7 +652,7 @@ rdnPretty(
                }
        }
 
-       Debug( LDAP_DEBUG_TRACE, "<<< dnPretty: <%s>\n", out->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, "<<< dnPretty: <%s>\n", out->bv_val ? out->bv_val : "", 0, 0 );
 
        return LDAP_SUCCESS;
 }
@@ -671,7 +671,7 @@ dnPrettyNormalDN(
 
        Debug( LDAP_DEBUG_TRACE, ">>> dn%sDN: <%s>\n", 
                        flags == SLAP_LDAPDN_PRETTY ? "Pretty" : "Normal", 
-                       val->bv_val, 0 );
+                       val->bv_val ? val->bv_val : "", 0 );
 
        if ( val->bv_len == 0 ) {
                return LDAP_SUCCESS;
@@ -718,7 +718,7 @@ dnPrettyNormal(
        struct berval *normal,
        void *ctx)
 {
-       Debug( LDAP_DEBUG_TRACE, ">>> dnPrettyNormal: <%s>\n", val->bv_val, 0, 0 );
+       Debug( LDAP_DEBUG_TRACE, ">>> dnPrettyNormal: <%s>\n", val->bv_val ? val->bv_val : "", 0, 0 );
 
        assert( val != NULL );
        assert( pretty != NULL );
@@ -786,7 +786,8 @@ dnPrettyNormal(
        }
 
        Debug( LDAP_DEBUG_TRACE, "<<< dnPrettyNormal: <%s>, <%s>\n",
-               pretty->bv_val, normal->bv_val, 0 );
+               pretty->bv_val ? pretty->bv_val : "",
+               normal->bv_val ? normal->bv_val : "", 0 );
 
        return LDAP_SUCCESS;
 }
index 500993b3fcbfa73599fa098a78d169c823c88579..4cafcdc32c5f4ed3ddf3cc01ffc6e72461948f3d 100644 (file)
@@ -157,27 +157,31 @@ rwm_dn_massage(
        int             rc = 0;
        struct berval   mdn;
        static char     *dmy = "";
+       char *in_val;
 
        assert( dc != NULL );
        assert( in != NULL );
        assert( dn != NULL );
 
+       /* protect from NULL berval */
+       in_val = in->bv_val ? in->bv_val : dmy;
+
        rc = rewrite_session( dc->rwmap->rwm_rw, dc->ctx,
-                       ( in->bv_val ? in->bv_val : dmy ), 
-                       dc->conn, &mdn.bv_val );
+                       in_val, dc->conn, &mdn.bv_val );
        switch ( rc ) {
        case REWRITE_REGEXEC_OK:
-               if ( !BER_BVISNULL( &mdn ) && mdn.bv_val != in->bv_val ) {
+               if ( !BER_BVISNULL( &mdn ) && mdn.bv_val != in_val ) {
                        mdn.bv_len = strlen( mdn.bv_val );
                        *dn = mdn;
                } else {
-                       *dn = *in;
+                       dn->bv_len = in->bv_len;
+                       dn->bv_val = in_val;
                }
                rc = LDAP_SUCCESS;
 
                Debug( LDAP_DEBUG_ARGS,
                        "[rw] %s: \"%s\" -> \"%s\"\n",
-                       dc->ctx, in->bv_val, dn->bv_val );
+                       dc->ctx, in_val, dn->bv_val );
                break;
                
        case REWRITE_REGEXEC_UNWILLING: