]> git.sur5r.net Git - openldap/commitdiff
Allow adding of dn: o=foo if suffix is "" and rootdn.
authorKurt Zeilenga <kurt@openldap.org>
Sat, 19 Jun 1999 04:26:17 +0000 (04:26 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sat, 19 Jun 1999 04:26:17 +0000 (04:26 +0000)
servers/slapd/back-ldbm/add.c

index dbb96e8f22dc89bafea411a2c5ce5986c42bfe1d..6173a78c925f2c463f8627e7c453a84166a445e1 100644 (file)
@@ -55,9 +55,13 @@ ldbm_back_add(
         * add the entry.
         */
 
-       if ( (pdn = dn_parent( be, e->e_ndn )) != NULL ) {
+       pdn = dn_parent( be, e->e_ndn );
+
+       if( pdn != NULL && *pdn != '\0' && !be_issuffix(be, "") ) {
                char *matched = NULL;
 
+               assert( *pdn != '\0' );
+
                /* get parent with writer lock */
                if ( (p = dn2entry_w( be, pdn, &matched )) == NULL ) {
                        ldap_pvt_thread_mutex_unlock(&li->li_add_mutex);
@@ -100,11 +104,19 @@ ldbm_back_add(
                }
 
        } else {
+               if(pdn != NULL) {
+                       assert( *pdn == '\0' );
+                       free(pdn);
+               }
+
                /* no parent, must be adding entry to root */
                if ( ! be_isroot( be, op->o_ndn ) ) {
                        ldap_pvt_thread_mutex_unlock(&li->li_add_mutex);
-                       Debug( LDAP_DEBUG_TRACE, "no parent & not root\n", 0,
-                           0, 0 );
+
+                       Debug( LDAP_DEBUG_TRACE, "%s add denied\n",
+                                       pdn == NULL ? "suffix" : "entry at root",
+                                       0, 0 );
+
                        send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
                            "", "" );