]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/dn.c
ITS#6932: Clean up strange asserts & nearby code.
[openldap] / servers / slapd / dn.c
index 5b1adbf6da626130ada9b5dce0bc53dd2a685751..cb4c6951655718bf4b97b278512bea16fa2ec61b 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2010 The OpenLDAP Foundation.
+ * Copyright 1998-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -302,16 +302,13 @@ LDAPRDN_rewrite( LDAPRDN rdn, unsigned flags, void *ctx )
                ava->la_attr = ad->ad_cname;
 
                if( ava->la_flags & LDAP_AVA_BINARY ) {
-                       if( ava->la_value.bv_len == 0 ) {
-                               /* BER encoding is empty */
-                               return LDAP_INVALID_SYNTAX;
-                       }
+                       /* AVA is binary encoded, not supported */
+                       return LDAP_INVALID_SYNTAX;
 
                        /* Do not allow X-ORDERED 'VALUES' naming attributes */
                } else if( ad->ad_type->sat_flags & SLAP_AT_ORDERED_VAL ) {
                        return LDAP_INVALID_SYNTAX;
 
-                       /* AVA is binary encoded, don't muck with it */
                } else if( flags & SLAP_LDAPDN_PRETTY ) {
                        transf = ad->ad_type->sat_syntax->ssyn_pretty;
                        if( !transf ) {
@@ -706,11 +703,10 @@ dnPrettyNormal(
        struct berval *normal,
        void *ctx)
 {
-       Debug( LDAP_DEBUG_TRACE, ">>> dnPrettyNormal: <%s>\n", val->bv_val ? val->bv_val : "", 0, 0 );
-
        assert( val != NULL );
        assert( pretty != NULL );
        assert( normal != NULL );
+       Debug( LDAP_DEBUG_TRACE, ">>> dnPrettyNormal: <%s>\n", val->bv_val ? val->bv_val : "", 0, 0 );
 
        if ( val->bv_len == 0 ) {
                ber_dupbv_x( pretty, val, ctx );
@@ -1172,11 +1168,13 @@ dnIsSuffix(
        const struct berval *dn,
        const struct berval *suffix )
 {
-       int     d = dn->bv_len - suffix->bv_len;
+       int     d;
 
        assert( dn != NULL );
        assert( suffix != NULL );
 
+       d = dn->bv_len - suffix->bv_len;
+
        /* empty suffix matches any dn */
        if ( suffix->bv_len == 0 ) {
                return 1;
@@ -1198,7 +1196,7 @@ dnIsSuffix(
        }
 
        /* compare */
-       return( strcmp( dn->bv_val + d, suffix->bv_val ) == 0 );
+       return( strncmp( dn->bv_val + d, suffix->bv_val, suffix->bv_len ) == 0 );
 }
 
 /*