]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-ldbm/alias.c
Import resetting of c_dn/c_cdn after anonymous bind.
[openldap] / servers / slapd / back-ldbm / alias.c
index 88edf68724241e03a770b33bc40e4eb3838f4d23..1d5a02484c5cca84e584935e1a9d4c2c66f0d5cb 100644 (file)
@@ -12,6 +12,8 @@
 
 #include "portable.h"
 
+#ifdef SLAPD_ALIAS_DEREF
+
 #include <stdio.h>
 #include <string.h>
 #include <ac/socket.h>         /* Get struct sockaddr for slap.h */
@@ -121,7 +123,7 @@ char *derefDN ( Backend     *be,
   
 
   Debug( LDAP_DEBUG_TRACE, 
-        "<= dereferencing dn %s\n", 
+        "<= dereferencing dn: \"%s\"\n", 
         dn, 0, 0 );
   
   newDN = ch_strdup ( dn );
@@ -203,8 +205,10 @@ char *derefDN ( Backend     *be,
     }
   }
   
-  /* free reader lock */
-  cache_return_entry_r(&li->li_cache, eMatched);
+  if(eMatched != NULL) {
+    /* free reader lock */
+    cache_return_entry_r(&li->li_cache, eMatched);
+  }
 
   /*
    * the final part of the DN might be an alias 
@@ -226,7 +230,7 @@ char *derefDN ( Backend     *be,
    */
   if (depth >= be->be_maxDerefDepth) {
     Debug( LDAP_DEBUG_TRACE, 
-          "<= max deref depth exceeded in derefDN for %s, result %s\n", 
+          "<= max deref depth exceeded in derefDN for \"%s\", result \"%s\"\n", 
           dn, newDN, 0 );
     send_ldap_result( conn, op, LDAP_ALIAS_PROBLEM, "",
                      "Maximum alias dereference depth exceeded for base" );
@@ -236,8 +240,10 @@ char *derefDN ( Backend     *be,
     newDN = ch_strdup ( dn );
   }
   
-  Debug( LDAP_DEBUG_TRACE, "<= returning deref DN of  %s\n", newDN, 0, 0 ); 
+  Debug( LDAP_DEBUG_TRACE, "<= returning deref DN of \"%s\"\n", newDN, 0, 0 ); 
   if (matched != NULL) free(matched);
 
   return newDN;
 }
+
+#endif /* SLAPD_ALIAS_DEREF */