From: Will Ballantyne Date: Fri, 26 Mar 1999 16:34:47 +0000 (+0000) Subject: argh, somehow bdb2 version overwritten by ldbm version. Fixed. X-Git-Tag: OPENLDAP_SLAPD_BACK_LDAP~330 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=918b9f8d86df1d39d9f1bef51d90017a5b3fa5bc;p=openldap argh, somehow bdb2 version overwritten by ldbm version. Fixed. --- diff --git a/servers/slapd/back-bdb2/alias.c b/servers/slapd/back-bdb2/alias.c index 9c4f1adeac..5b3588f7ee 100644 --- a/servers/slapd/back-bdb2/alias.c +++ b/servers/slapd/back-bdb2/alias.c @@ -16,19 +16,20 @@ #include #include /* Get struct sockaddr for slap.h */ #include "slap.h" -#include "back-ldbm.h" -#include "proto-back-ldbm.h" +#include "back-bdb2.h" +#include "proto-back-bdb2.h" /* * given an alias object, dereference it to its end point. * Entry returned has reader lock or is NULL. Starting entry is not released. */ -Entry *derefAlias_r ( Backend *be, +Entry *bdb2i_derefAlias_r ( BackendDB *be, Connection *conn, Operation *op, Entry *e) { - struct ldbminfo *li = (struct ldbminfo *) be->be_private; /* to free cache entries */ + /* to free cache entries */ + struct ldbminfo *li = (struct ldbminfo *) be->be_private; Attribute *a; int depth; char *matched; @@ -64,52 +65,52 @@ Entry *derefAlias_r ( Backend *be, * release past lock if not original */ if ( (depth > 0) && e ) { - cache_return_entry_r(&li->li_cache, e); + bdb2i_cache_return_entry_r(&li->li_cache, e); } /* make sure new and old DN are not same to avoid loops */ dn_normalize_case (newDN); if ( strcmp (newDN, oldDN) == 0 ) { - Debug( LDAP_DEBUG_TRACE, - "<= %s alias is same as current %s\n", - oldDN, newDN, 0 ); - send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", - "Circular alias" ); - free (newDN); - free (oldDN); - break; + Debug( LDAP_DEBUG_TRACE, + "<= %s alias is same as current %s\n", + oldDN, newDN, 0 ); + send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", + "Circular alias" ); + free (newDN); + free (oldDN); + break; } /* make sure new and original are not same to avoid deadlocks */ if ( strcmp (newDN, origDN->e_ndn) == 0 ) { - Debug( LDAP_DEBUG_TRACE, - "<= %s alias is same as original %s\n", - oldDN, origDN->e_ndn, 0 ); - send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", - "Circular alias" ); - free (newDN); - free (oldDN); - break; + Debug( LDAP_DEBUG_TRACE, + "<= %s alias is same as original %s\n", + oldDN, origDN->e_ndn, 0 ); + send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", + "Circular alias" ); + free (newDN); + free (oldDN); + break; } /* * ok, so what happens if there is an alias in the DN of a dereferenced * alias object? */ - if ( (e = dn2entry_r( be, newDN, &matched )) == NULL ) { + if ( (e = bdb2i_dn2entry_r( be, newDN, &matched )) == NULL ) { - /* could not deref return error */ - Debug( LDAP_DEBUG_TRACE, - "<= %s is a dangling alias to %s\n", - oldDN, newDN, 0 ); - send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", - "Dangling Alias" ); + /* could not deref return error */ + Debug( LDAP_DEBUG_TRACE, + "<= %s is a dangling alias to %s\n", + oldDN, newDN, 0 ); + send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", + "Dangling Alias" ); - if (matched != NULL) free(matched); - free (newDN); - free (oldDN); - break; + if(matched != NULL) free(matched); + free (newDN); + free (oldDN); + break; } free (newDN); @@ -120,12 +121,12 @@ Entry *derefAlias_r ( Backend *be, * there was an aliasedobjectname defined but no data. * this can't happen, right? */ - Debug( LDAP_DEBUG_TRACE, - "<= %s has no data in aliasedobjectname attribute\n", - (e && e->e_dn) ? e->e_dn : "(null)", 0, 0 ); - send_ldap_result( conn, op, LDAP_ALIAS_PROBLEM, "", - "Alias missing aliasedobjectname" ); - break; + Debug( LDAP_DEBUG_TRACE, + "<= %s has no data in aliasedobjectname attribute\n", + (e && e->e_dn) ? e->e_dn : "(null)", 0, 0 ); + send_ldap_result( conn, op, LDAP_ALIAS_PROBLEM, "", + "Alias missing aliasedobjectname" ); + break; } } @@ -135,9 +136,9 @@ Entry *derefAlias_r ( Backend *be, if ( depth >= be->be_maxDerefDepth ) { Debug( LDAP_DEBUG_TRACE, "<= deref(\"%s\") exceeded maximum deref depth (%d) at \"%s\"\n", - origDN->e_dn ? origDN->e_dn : "(null)", - be->be_maxDerefDepth, - (e && e->e_ndn) ? e->e_ndn : "(null)"); + origDN->e_dn ? origDN->e_dn : "(null)", + be->be_maxDerefDepth, + (e && e->e_ndn) ? e->e_ndn : "(null)"); send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", "Maximum alias dereference depth exceeded" ); } @@ -159,7 +160,7 @@ Entry *derefAlias_r ( Backend *be, * reconstructed dn is ou=MyOU,o=MyOrg,c=MyCountry * release lock on o=MyOrg,c=MyCountry entry */ -char *derefDN ( Backend *be, +char *bdb2i_derefDN ( BackendDB *be, Connection *conn, Operation *op, char *dn @@ -173,7 +174,7 @@ char *derefDN ( Backend *be, Entry *eDeref; Entry *eNew; - if (!dn) return NULL; + if (!dn) return NULL; Debug( LDAP_DEBUG_TRACE, "<= dereferencing dn: \"%s\"\n", @@ -183,17 +184,17 @@ char *derefDN ( Backend *be, /* while we don't have a matched dn, deref the DN */ for ( depth = 0; - ( (eMatched = dn2entry_r( be, newDN, &matched )) == NULL) && + ( (eMatched = bdb2i_dn2entry_r( be, newDN, &matched )) == NULL) && (depth < be->be_maxDerefDepth); ++depth ) { if ((matched != NULL) && *matched) { char *submatch; - + /* * make sure there actually is an entry for the matched part */ - if ( (eMatched = dn2entry_r( be, matched, &submatch )) != NULL) { + if ( (eMatched = bdb2i_dn2entry_r( be, matched, &submatch )) != NULL) { char *remainder; /* part before the aliased part */ int rlen = strlen(newDN) - strlen(matched); @@ -205,16 +206,16 @@ char *derefDN ( Backend *be, Debug( LDAP_DEBUG_TRACE, "<= remainder %s\n", remainder, 0, 0 ); - if ((eNew = derefAlias_r( be, conn, op, eMatched )) == NULL) { + if ((eNew = bdb2i_derefAlias_r( be, conn, op, eMatched )) == NULL) { free (matched); matched = NULL; free (newDN); newDN = NULL; free (remainder); remainder = NULL; - - cache_return_entry_r(&li->li_cache, eMatched); - eMatched = NULL; + + bdb2i_cache_return_entry_r(&li->li_cache, eMatched); + eMatched = NULL; break; /* no associated entry, dont deref */ } else { @@ -223,10 +224,10 @@ char *derefDN ( Backend *be, i = strcasecmp (matched, eNew->e_dn); /* free reader lock */ - cache_return_entry_r(&li->li_cache, eNew); + bdb2i_cache_return_entry_r(&li->li_cache, eNew); - free (matched); - matched = NULL; + free (matched); + matched = NULL; if (! i) { /* newDN same as old so not an alias, no need to go further */ @@ -234,8 +235,8 @@ char *derefDN ( Backend *be, newDN = NULL; free (remainder); - cache_return_entry_r(&li->li_cache, eMatched); - eMatched = NULL; + bdb2i_cache_return_entry_r(&li->li_cache, eMatched); + eMatched = NULL; break; } @@ -251,8 +252,8 @@ char *derefDN ( Backend *be, free (remainder); } - /* free reader lock */ - cache_return_entry_r(&li->li_cache, eMatched); + /* free reader lock */ + bdb2i_cache_return_entry_r(&li->li_cache, eMatched); } else { if(submatch != NULL) free(submatch); @@ -264,12 +265,12 @@ char *derefDN ( Backend *be, } } - /* release lock if a match terminated the loop, there should be no - * outstanding locks at this point - */ + /* release lock if a match terminated the loop, there should be no + * outstanding locks at this point + */ if(eMatched != NULL) { /* free reader lock */ - cache_return_entry_r(&li->li_cache, eMatched); + bdb2i_cache_return_entry_r(&li->li_cache, eMatched); } /* @@ -278,35 +279,34 @@ char *derefDN ( Backend *be, * and the above loop complete but we would still be left with an aliased DN. */ if (newDN != NULL) { - if ( (eNew = dn2entry_r( be, newDN, &matched )) != NULL) { - if ((eDeref = derefAlias_r( be, conn, op, eNew )) != NULL) { + if ( (eNew = bdb2i_dn2entry_r( be, newDN, &matched )) != NULL) { + if ((eDeref = bdb2i_derefAlias_r( be, conn, op, eNew )) != NULL) { free (newDN); newDN = ch_strdup (eDeref->e_dn); /* free reader lock */ - cache_return_entry_r(&li->li_cache, eDeref); + bdb2i_cache_return_entry_r(&li->li_cache, eDeref); } /* free reader lock */ - cache_return_entry_r(&li->li_cache, eNew); + bdb2i_cache_return_entry_r(&li->li_cache, eNew); } } - if (matched != NULL) free(matched); + if (matched != NULL) free(matched); /* * warn if we exceeded the max depth as the resulting DN may not be dereferenced */ if (depth >= be->be_maxDerefDepth) { - if (newDN) { - Debug( LDAP_DEBUG_TRACE, - "<= max deref depth exceeded in derefDN for \"%s\", result \"%s\"\n", - dn, newDN, 0 ); - free (newDN); - newDN = NULL; - } - else { - Debug( LDAP_DEBUG_TRACE, - "<= max deref depth exceeded in derefDN for \"%s\", result NULL\n", - dn, 0, 0 ); - } + if (newDN) { + Debug( LDAP_DEBUG_TRACE, + "<= max deref depth exceeded in derefDN for \"%s\", result \"%s\"\n", + dn, newDN, 0 ); + free (newDN); + newDN = NULL; + } else { + Debug( LDAP_DEBUG_TRACE, + "<= max deref depth exceeded in derefDN for \"%s\", result NULL\n", + dn, 0, 0 ); + } send_ldap_result( conn, op, LDAP_ALIAS_DEREF_PROBLEM, "", "Maximum alias dereference depth exceeded for base" ); }