]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/add.c
Minor changes to support parallel make.
[openldap] / servers / slapd / add.c
index cfff625602d4a1bae1e6c9ced059ffcb7eb45807..efb4e18d6d9b04a676c2534e87735f656d82e86a 100644 (file)
@@ -26,7 +26,7 @@ int
 do_add( Connection *conn, Operation *op )
 {
        BerElement      *ber = op->o_ber;
-       char            *dn, *last;
+       char            *dn, *ndn, *last;
        ber_len_t       len;
        ber_tag_t       tag;
        Entry           *e;
@@ -62,10 +62,21 @@ do_add( Connection *conn, Operation *op )
                return -1;
        }
 
+       ndn = ch_strdup( dn );
+
+       if ( dn_normalize_case( ndn ) == NULL ) {
+               Debug( LDAP_DEBUG_ANY, "do_add: invalid dn (%s)\n", dn, 0, 0 );
+               send_ldap_result( conn, op, LDAP_INVALID_DN_SYNTAX, NULL,
+                   "invalid DN", NULL, NULL );
+               free( dn );
+               free( ndn );
+               return LDAP_INVALID_DN_SYNTAX;
+       }
+
        e = (Entry *) ch_calloc( 1, sizeof(Entry) );
 
        e->e_dn = dn;
-       e->e_ndn = dn_normalize_case( ch_strdup( dn ) );
+       e->e_ndn = ndn;
        e->e_private = NULL;
 
        dn = NULL;
@@ -117,7 +128,7 @@ do_add( Connection *conn, Operation *op )
        } 
 
        Statslog( LDAP_DEBUG_STATS, "conn=%d op=%d ADD dn=\"%s\"\n",
-           conn->c_connid, op->o_opid, e->e_ndn, 0, 0 );
+           op->o_connid, op->o_opid, e->e_ndn, 0, 0 );
 
        /*
         * We could be serving multiple database backends.  Select the