]> git.sur5r.net Git - openldap/commitdiff
Changed dn2entry to always returned a modified matched.
authorKurt Zeilenga <kurt@openldap.org>
Mon, 23 Nov 1998 20:08:25 +0000 (20:08 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Mon, 23 Nov 1998 20:08:25 +0000 (20:08 +0000)
Modified users of this code to free matched if set.

servers/slapd/back-ldbm/add.c
servers/slapd/back-ldbm/alias.c
servers/slapd/back-ldbm/bind.c
servers/slapd/back-ldbm/compare.c
servers/slapd/back-ldbm/delete.c
servers/slapd/back-ldbm/dn2id.c
servers/slapd/back-ldbm/group.c
servers/slapd/back-ldbm/modify.c
servers/slapd/back-ldbm/search.c

index 75dd12b1b2506bae216d78f2358a0635931b7f70..77c92d220a3a516889e9d36462596d6fbf340f95 100644 (file)
@@ -82,7 +82,6 @@ ldbm_back_add(
        if ( (pdn = dn_parent( be, dn )) != NULL ) {
                char *matched;
                /* no parent */
-               matched = NULL;
 
                /* get entry with reader lock */
                if ( (p = dn2entry_r( be, pdn, &matched )) == NULL ) {
@@ -90,6 +89,7 @@ ldbm_back_add(
                            0, 0 );
                        send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT,
                            matched, "" );
+
                        if ( matched != NULL ) {
                                free( matched );
                        }
@@ -97,9 +97,6 @@ ldbm_back_add(
                        rc = -1;
                        goto return_results;
                }
-               if ( matched != NULL ) {
-                       free( matched );
-               }
 
                if ( ! access_allowed( be, conn, op, p, "children", NULL,
                    op->o_dn, ACL_WRITE ) ) {
index 5285087078d6caf4c3edca70efa11e1fd9def1a2..92eca6c6dfc75a8473981836a965ff523afca621 100644 (file)
@@ -112,7 +112,7 @@ char *derefDN ( Backend     *be,
 )
 {
   struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-  char         *matched = NULL;
+  char         *matched;
   char         *newDN = NULL;
   int  depth;
   Entry        *eMatched;
@@ -135,7 +135,7 @@ char *derefDN ( Backend     *be,
     /* free reader lock */
     cache_return_entry_r(&li->li_cache, eMatched);
 
-    if (*matched) {    
+    if ((matched != NULL) && *matched) {       
       char *submatch;
       
       /* 
@@ -155,6 +155,7 @@ char *derefDN ( Backend     *be,
        
        if ((eNew = derefAlias_r( be, conn, op, eMatched )) == NULL) {
          free (matched);
+         matched = NULL;
          free (newDN);
          newDN = NULL;
          free (remainder);
@@ -169,6 +170,7 @@ char *derefDN ( Backend     *be,
            free (newDN);
            newDN = NULL;
            free (matched);
+           matched = NULL;
            free (remainder);
            break;
          }
@@ -178,13 +180,13 @@ char *derefDN ( Backend     *be,
           * the new dn together
           */
          free (newDN);
-         free (matched);
-         
          newDN = ch_malloc (strlen(eMatched->e_dn) + rlen + 1);
          strcpy (newDN, remainder);
          strcat (newDN, eMatched->e_dn);
          Debug( LDAP_DEBUG_TRACE, "<= expanded to %s\n", newDN, 0, 0 );
 
+         free (matched);
+         matched = NULL;
          free (remainder);
 
           /* free reader lock */
@@ -234,7 +236,7 @@ char *derefDN ( Backend     *be,
   }
   
   Debug( LDAP_DEBUG_TRACE, "<= returning deref DN of  %s\n", newDN, 0, 0 ); 
-  free(matched);
+  if (matched != NULL) free(matched);
 
   return newDN;
 }
index 591e488c9cc98e27ef309a81dc5268c8dd8b1965..cb59ab034932097ccd3498da14cf669b4cedfe57 100644 (file)
@@ -126,7 +126,7 @@ ldbm_back_bind(
        Entry           *e;
        Attribute       *a;
        int             rc;
-       char            *matched = NULL;
+       char            *matched;
 #ifdef HAVE_KERBEROS
        char            krbname[MAX_K_NAME_SZ + 1];
        AUTH_DAT        ad;
index d17c5da88a9dca191f51405c1b9156816b0842d0..29f654751c90fb625c1e8ada77d927b4032a27fa 100644 (file)
@@ -29,6 +29,8 @@ ldbm_back_compare(
        /* get entry with reader lock */
        if ( (e = dn2entry_r( be, dn, &matched )) == NULL ) {
                send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT, matched, "" );
+
+               if(matched == NULL) free(matched);
                return( 1 );
        }
 
index 7e0008ba802e50b576011d07c2f0017e6a36878f..64723229f9dd7e1ce83dbadd14b4f25c363d958c 100644 (file)
@@ -20,7 +20,7 @@ ldbm_back_delete(
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            *matched = NULL;
+       char            *matched;
         char            *pdn = NULL;
        Entry           *e, *p;
 
@@ -66,7 +66,6 @@ ldbm_back_delete(
 
        /* XXX delete from parent's id2children entry XXX */
        pdn = dn_parent( be, dn );
-       matched = NULL;
        p = dn2entry_r( be, pdn, &matched );
        if ( id2children_remove( be, p, e ) != 0 ) {
                send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "","" );
@@ -93,9 +92,11 @@ ldbm_back_delete(
 
        /* free entry and writer lock */
        cache_return_entry_w( &li->li_cache, e );
-       if ( p )
+       if ( p != NULL )
                cache_return_entry_r( &li->li_cache, p );
 
+       if ( matched != NULL ) free(matched);
+
        send_ldap_result( conn, op, LDAP_SUCCESS, "", "" );
 
        return( 0 );
@@ -104,8 +105,10 @@ error_return:;
        /* free entry and writer lock */
        cache_return_entry_w( &li->li_cache, e );
 
-       if( p )
+       if( p != NULL )
                cache_return_entry_r( &li->li_cache, p );
 
+       if ( matched != NULL ) free(matched);
+
        return( -1 );
 }
index 593107cc2cc69bd13334b738c5209add6393c592..ae0f62d8ddaba28fbd09573145cfbbc33ac1a86b 100644 (file)
@@ -166,18 +166,19 @@ dn2entry(
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
        ID              id;
-       Entry           *e;
+       Entry           *e = NULL;
        char            *pdn;
 
        Debug(LDAP_DEBUG_TRACE, "dn2entry_%s: dn: %s\n",
                rw ? "w" : "r", dn, 0);
 
+       *matched = NULL;
+
        if ( (id = dn2id( be, dn )) != NOID &&
                (e = id2entry( be, id, rw )) != NULL )
        {
                return( e );
        }
-       *matched = NULL;
 
        /* stop when we get to the suffix */
        if ( be_issuffix( be, dn ) ) {
@@ -199,19 +200,6 @@ dn2entry(
        return( NULL );
 }
 
-#if 0
-               if (e->e_state == ENTRY_STATE_DELETED)
-                       continue;
-
-               if (strcmp(dn, e->e_dn) != 0)
-                       continue;
-
-               /* return locked entry entry */
-               return(e);
-       }
-}
-#endif
-
 Entry *
 dn2entry_r(
        Backend *be,
index 7def923a4dc5d48dace72223e1b2b9ac8e17572a..a889041c25254e242e4c88d328e074dd87604c44 100644 (file)
@@ -45,7 +45,8 @@ ldbm_back_group(
                         free(matched);
                 return( 1 );
         }
-        Debug( LDAP_DEBUG_ARGS, "=> ldbm_back_group: found bdn: %s matched: %s\n", bdn, (matched ? matched : ""), 0 ); 
+
+        Debug( LDAP_DEBUG_ARGS, "=> ldbm_back_group: found bdn: %s\n", bdn, 0, 0 ); 
 
         /* check for deleted */
 
index 7b0d141d0f131a7d08335fc01e468bcf4bbd9e27..2f74c108f1aa65a5c8173dcb44344d3154e385e9 100644 (file)
@@ -25,7 +25,7 @@ ldbm_back_modify(
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            *matched = NULL;
+       char            *matched;
        Entry           *e;
        int             i, err;
        LDAPMod         *mod;
index 4b25fe66cd7819955f63016c63579ebbf6899d5b..65d78af635430d6244fe46f1f7c8f2ac02696293 100644 (file)
@@ -49,7 +49,7 @@ ldbm_back_search(
        ID              id;
        Entry           *e;
        Attribute       *ref;
-       char            *matched = NULL;
+       char            *matched;
        int             rmaxsize, nrefs;
        char            *rbuf, *rcur, *r;
        int             nentries = 0;