]> git.sur5r.net Git - openldap/commitdiff
Fix crasher in slapi_dn_issuffix() when malformed DNs are passed
authorLuke Howard <lukeh@openldap.org>
Tue, 1 Apr 2003 17:16:56 +0000 (17:16 +0000)
committerLuke Howard <lukeh@openldap.org>
Tue, 1 Apr 2003 17:16:56 +0000 (17:16 +0000)
servers/slapd/slapi/slapi_utils.c

index 47c6aca9390a41e15e73bdb94113577e3f6868ba..8a6b604cafbf6ec245e886ffff33b44757aea039 100644 (file)
@@ -902,6 +902,7 @@ slapi_dn_issuffix(
 #ifdef LDAP_SLAPI
        struct berval   bdn, ndn;
        struct berval   bsuffix, nsuffix;
+       int rc;
 
        assert( dn != NULL );
        assert( suffix != NULL );
@@ -912,10 +913,21 @@ slapi_dn_issuffix(
        bsuffix.bv_val = suffix;
        bsuffix.bv_len = strlen( suffix );
 
-       dnNormalize2( NULL, &bdn, &ndn );
-       dnNormalize2( NULL, &bsuffix, &nsuffix );
+       if ( dnNormalize2( NULL, &bdn, &ndn ) != LDAP_SUCCESS ) {
+               return 0;
+       }
+
+       if ( dnNormalize2( NULL, &bsuffix, &nsuffix ) != LDAP_SUCCESS ) {
+               slapi_ch_free( (void **)&ndn.bv_val );
+               return 0;
+       }
+
+       rc = dnIsSuffix( &ndn, &nsuffix );
 
-       return dnIsSuffix( &ndn, &nsuffix );
+       slapi_ch_free( (void **)&ndn.bv_val );
+       slapi_ch_free( (void **)&nsuffix.bv_val );
+
+       return rc;
 #else /* LDAP_SLAPI */
        return 0;
 #endif /* LDAP_SLAPI */