From: hno <> Date: Thu, 11 Jan 2001 07:01:52 +0000 (+0000) Subject: auth_rewrite merge: X-Git-Tag: SQUID_3_0_PRE1~1649 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5dae85146722a34b6fbd2ccd9f193331bbde2f37;p=thirdparty%2Fsquid.git auth_rewrite merge: Lots of bug fixes. --- diff --git a/src/auth/basic/auth_basic.cc b/src/auth/basic/auth_basic.cc index 55b6515a22..e640d263a5 100644 --- a/src/auth/basic/auth_basic.cc +++ b/src/auth/basic/auth_basic.cc @@ -1,6 +1,6 @@ /* - * $Id: auth_basic.cc,v 1.2 2001/01/10 00:24:39 hno Exp $ + * $Id: auth_basic.cc,v 1.3 2001/01/11 00:01:53 hno Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Duane Wessels @@ -87,9 +87,14 @@ authBasicDone(void) authbasic_initialised = 0; if (!shutting_down) return; - helperFree(basicauthenticators); + if (basicauthenticators) + helperFree(basicauthenticators); basicauthenticators = NULL; - memPoolDestroy(basic_data_pool); + if (basic_data_pool) { + memPoolDestroy(basic_data_pool); + basic_data_pool = NULL; + } + debug(29, 2) ("authBasicDone: Basic authentication Shutdown.\n"); } void @@ -162,7 +167,6 @@ authenticateBasicAuthenticateUser(auth_user_request_t * auth_user_request, reque debug(29, 4) ("authBasicAuthenticate: credentials expired - rechecking\n"); return; } - /* we have been through the external helper, and the credentials haven't expired */ debug(29, 9) ("authenticateBasicAuthenticateuser: user '%s' authenticated\n", basic_auth->username); @@ -258,16 +262,16 @@ authenticateBasicHandleReply(void *data, char *reply) auth_user->flags.credentials_ok = 3; basic_auth->credentials_checkedtime = squid_curtime; valid = cbdataValid(r->data); - cbdataUnlock(r->data); if (valid) r->handler(r->data, NULL); + cbdataUnlock(r->data); node = basic_auth->auth_queue; while (node) { tmpnode = node->next; valid = cbdataValid(node->data); - cbdataUnlock(node->data); if (valid) node->handler(node->data, NULL); + cbdataUnlock(node->data); xfree(node); node = tmpnode; } diff --git a/src/auth/ntlm/auth_ntlm.cc b/src/auth/ntlm/auth_ntlm.cc index 2bb38ffef5..fdc6abe07a 100644 --- a/src/auth/ntlm/auth_ntlm.cc +++ b/src/auth/ntlm/auth_ntlm.cc @@ -1,6 +1,6 @@ /* - * $Id: auth_ntlm.cc,v 1.3 2001/01/10 00:24:39 hno Exp $ + * $Id: auth_ntlm.cc,v 1.4 2001/01/11 00:01:54 hno Exp $ * * DEBUG: section 29 NTLM Authenticator * AUTHOR: Robert Collins @@ -99,12 +99,25 @@ authNTLMDone(void) authntlm_initialised = 0; if (!shutting_down) return; - helperStatefulFree(ntlmauthenticators); + if (ntlmauthenticators) + helperStatefulFree(ntlmauthenticators); ntlmauthenticators = NULL; - memPoolDestroy(ntlm_helper_state_pool); - memPoolDestroy(ntlm_request_pool); - memPoolDestroy(ntlm_user_pool); - + if (ntlm_helper_state_pool) { + assert(memPoolInUseCount(ntlm_helper_state_pool) == 0); + memPoolDestroy(ntlm_helper_state_pool); + ntlm_helper_state_pool = NULL; + } + if (ntlm_request_pool) { + assert(memPoolInUseCount(ntlm_request_pool) == 0); + memPoolDestroy(ntlm_request_pool); + ntlm_request_pool = NULL; + } + if (ntlm_user_pool) { + assert(memPoolInUseCount(ntlm_user_pool) == 0); + memPoolDestroy(ntlm_user_pool); + ntlm_user_pool = NULL; + } + debug(29, 2) ("authNTLMDone: NTLM authentication Shutdown.\n"); } /* free any allocated configuration details */ @@ -231,9 +244,9 @@ int authenticateNTLMActive() { if ((ntlmConfig != NULL) && (ntlmConfig->authenticate != NULL) && - (ntlmConfig->authenticateChildren != 0) && (ntlmConfig->challengeuses > -1) - && (ntlmConfig->challengelifetime>-1)) - return 1; + (ntlmConfig->authenticateChildren != 0) && (ntlmConfig->challengeuses > -1) + && (ntlmConfig->challengelifetime > -1)) + return 1; return 0; } @@ -364,10 +377,10 @@ authenticateNTLMHandleplaceholder(void *data, void *lastserver, char *reply) assert(r->auth_user_request); /* standard callback stuff */ valid = cbdataValid(r->data); - cbdataUnlock(r->data); /* call authenticateNTLMStart to retry this request */ debug(29, 9) ("authenticateNTLMHandleplaceholder: calling authenticateNTLMStart\n"); authenticateNTLMStart(r->auth_user_request, r->handler, r->data); + cbdataUnlock(r->data); authenticateStateFree(r); return result; } @@ -386,7 +399,6 @@ authenticateNTLMHandleReply(void *data, void *lastserver, char *reply) ntlm_request_t *ntlm_request; debug(29, 9) ("authenticateNTLMHandleReply: Helper: '%d' {%s}\n", lastserver, reply ? reply : ""); valid = cbdataValid(r->data); - cbdataUnlock(r->data); if (valid) { if (reply) { /* seperate out the useful data */ @@ -512,6 +524,7 @@ authenticateNTLMHandleReply(void *data, void *lastserver, char *reply) debug(29, 1) ("AuthenticateNTLMHandleReply: invalid callback data. Releasing helper '%d'.\n", lastserver); result = S_HELPER_RELEASE; } + cbdataUnlock(r->data); authenticateStateFree(r); debug(29, 9) ("NTLM HandleReply, telling stateful helper : %d\n", result); return result; diff --git a/src/authenticate.cc b/src/authenticate.cc index bc71eac859..29cb95af1d 100644 --- a/src/authenticate.cc +++ b/src/authenticate.cc @@ -1,6 +1,6 @@ /* - * $Id: authenticate.cc,v 1.17 2001/01/10 17:35:32 hno Exp $ + * $Id: authenticate.cc,v 1.18 2001/01/11 00:01:52 hno Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Duane Wessels @@ -122,7 +122,7 @@ authenticateStart(auth_user_request_t * auth_user_request, RH * handler, void *d { assert(auth_user_request); assert(handler); - debug(29, 9) ("authenticateStart: auth_user_request '%d'\n", auth_user_request); + debug(29, 9) ("authenticateStart: auth_user_request '%p'\n", auth_user_request); if (auth_user_request->auth_user->auth_module > 0) authscheme_list[auth_user_request->auth_user->auth_module - 1].authStart(auth_user_request, handler, data); else @@ -137,7 +137,7 @@ authenticateStart(auth_user_request_t * auth_user_request, RH * handler, void *d int authenticateValidateUser(auth_user_request_t * auth_user_request) { - debug(29, 9) ("authenticateValidateUser: Validating Auth_user request '%d'.\n", auth_user_request); + debug(29, 9) ("authenticateValidateUser: Validating Auth_user request '%p'.\n", auth_user_request); if (auth_user_request == NULL) { debug(29, 4) ("authenticateValidateUser: Auth_user_request was NULL!\n"); return 0; @@ -147,11 +147,11 @@ authenticateValidateUser(auth_user_request_t * auth_user_request) return 0; } if (auth_user_request->auth_user->auth_type == AUTH_UNKNOWN) { - debug(29, 4) ("authenticateValidateUser: Auth_user '%d' uses unknown scheme.\n", auth_user_request->auth_user); + debug(29, 4) ("authenticateValidateUser: Auth_user '%p' uses unknown scheme.\n", auth_user_request->auth_user); return 0; } if (auth_user_request->auth_user->auth_type == AUTH_BROKEN) { - debug(29, 4) ("authenticateValidateUser: Auth_user '%d' is broken for it's scheme.\n", auth_user_request->auth_user); + debug(29, 4) ("authenticateValidateUser: Auth_user '%p' is broken for it's scheme.\n", auth_user_request->auth_user); return 0; } /* any other sanity checks that we need in the future */ @@ -159,7 +159,7 @@ authenticateValidateUser(auth_user_request_t * auth_user_request) /* Thus should a module call to something like authValidate */ /* finally return ok */ - debug(29, 4) ("authenticateValidateUser: Validated Auth_user request '%d'.\n", auth_user_request); + debug(29, 4) ("authenticateValidateUser: Validated Auth_user request '%p'.\n", auth_user_request); return 1; } @@ -195,7 +195,7 @@ void authenticateAuthUserRequestFree(auth_user_request_t * auth_user_request) { dlink_node *link; - debug(29, 5) ("authenticateAuthUserRequestFree: freeing request %d\n", auth_user_request); + debug(29, 5) ("authenticateAuthUserRequestFree: freeing request %p\n", auth_user_request); if (!auth_user_request) return; assert(auth_user_request->references == 0); @@ -350,9 +350,9 @@ authenticateInit(authConfig * config) int i; authScheme *scheme; for (i = 0; i < config->n_configured; i++) { - if (authscheme_list[i].init) { - scheme = config->schemes + i; - authscheme_list[i].init(scheme); + scheme = config->schemes + i; + if (authscheme_list[scheme->Id].init) { + authscheme_list[scheme->Id].init(scheme); } } if (!proxy_auth_username_cache) @@ -399,7 +399,7 @@ authenticateFixHeader(HttpReply * rep, auth_user_request_t * auth_user_request, /* some other HTTP status */ break; } - debug(29, 9) ("authenticateFixHeader: headertype:%d authuser:%d\n", type, auth_user_request); + debug(29, 9) ("authenticateFixHeader: headertype:%d authuser:%p\n", type, auth_user_request); if ((rep->sline.status == HTTP_PROXY_AUTHENTICATION_REQUIRED) || (rep->sline.status == HTTP_UNAUTHORIZED)) /* this is a authenticate-needed response */ @@ -437,23 +437,23 @@ authenticateAddTrailer(HttpReply * rep, auth_user_request_t * auth_user_request, void authenticateAuthUserLock(auth_user_t * auth_user) { - debug(29, 9) ("authenticateAuthUserLock auth_user '%d'.\n", auth_user); + debug(29, 9) ("authenticateAuthUserLock auth_user '%p'.\n", auth_user); assert(auth_user != NULL); auth_user->references++; - debug(29, 9) ("authenticateAuthUserLock auth_user '%d' now at '%d'.\n", auth_user, auth_user->references); + debug(29, 9) ("authenticateAuthUserLock auth_user '%p' now at '%d'.\n", auth_user, auth_user->references); } void authenticateAuthUserUnlock(auth_user_t * auth_user) { - debug(29, 9) ("authenticateAuthUserUnlock auth_user '%d'.\n", auth_user); + debug(29, 9) ("authenticateAuthUserUnlock auth_user '%p'.\n", auth_user); assert(auth_user != NULL); if (auth_user->references > 0) { auth_user->references--; } else { - debug(29, 1) ("Attempt to lower Auth User %d refcount below 0!\n", auth_user); + debug(29, 1) ("Attempt to lower Auth User %p refcount below 0!\n", auth_user); } - debug(29, 9) ("authenticateAuthUserUnlock auth_user '%d' now at '%d'.\n", auth_user, auth_user->references); + debug(29, 9) ("authenticateAuthUserUnlock auth_user '%p' now at '%d'.\n", auth_user, auth_user->references); if (auth_user->references == 0) authenticateFreeProxyAuthUser(auth_user); } @@ -461,23 +461,23 @@ authenticateAuthUserUnlock(auth_user_t * auth_user) void authenticateAuthUserRequestLock(auth_user_request_t * auth_user_request) { - debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%d'.\n", auth_user_request); + debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%p'.\n", auth_user_request); assert(auth_user_request != NULL); auth_user_request->references++; - debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%d' now at '%d'.\n", auth_user_request, auth_user_request->references); + debug(29, 9) ("authenticateAuthUserRequestLock auth_user request '%p' now at '%d'.\n", auth_user_request, auth_user_request->references); } void authenticateAuthUserRequestUnlock(auth_user_request_t * auth_user_request) { - debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user request '%d'.\n", auth_user_request); + debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user request '%p'.\n", auth_user_request); assert(auth_user_request != NULL); if (auth_user_request->references > 0) { auth_user_request->references--; } else { - debug(29, 1) ("Attempt to lower Auth User request %d refcount below 0!\n", auth_user_request); + debug(29, 1) ("Attempt to lower Auth User request %p refcount below 0!\n", auth_user_request); } - debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user_request '%d' now at '%d'.\n", auth_user_request, auth_user_request->references); + debug(29, 9) ("authenticateAuthUserRequestUnlock auth_user_request '%p' now at '%d'.\n", auth_user_request, auth_user_request->references); if (auth_user_request->references == 0) { /* not locked anymore */ authenticateAuthUserRequestFree(auth_user_request); @@ -503,7 +503,7 @@ authenticateAuthUserMerge(auth_user_t * from, auth_user_t * to) auth_user_request_t *auth_user_request; /* XXX combine two authuser structs. Incomplete: it should merge in hash references * too and ask the module to merge in scheme data */ - debug(29, 5) ("authenticateAuthUserMerge auth_user '%d' into auth_user '%d'.\n", from, to); + debug(29, 5) ("authenticateAuthUserMerge auth_user '%p' into auth_user '%p'.\n", from, to); link = from->requests.head; while (link) { auth_user_request = link->data; @@ -525,12 +525,12 @@ authenticateFreeProxyAuthUser(void *data) auth_user_request_t *auth_user_request; dlink_node *link, *tmplink; assert(data != NULL); - debug(29, 5) ("authenticateFreeProxyAuthUser: Freeing auth_user '%d' with refcount '%d'.\n", u, u->references); + debug(29, 5) ("authenticateFreeProxyAuthUser: Freeing auth_user '%p' with refcount '%d'.\n", u, u->references); assert(u->references == 0); /* were they linked in by username ? */ if (u->usernamehash) { assert(u->usernamehash->auth_user == u); - debug(29, 5) ("authenticateFreeProxyAuthUser: removing usernamehash entry '%d'\n", u->usernamehash); + debug(29, 5) ("authenticateFreeProxyAuthUser: removing usernamehash entry '%p'\n", u->usernamehash); hash_remove_link(proxy_auth_username_cache, (hash_link *) u->usernamehash); /* don't free the key as we use the same user string as the auth_user @@ -540,7 +540,7 @@ authenticateFreeProxyAuthUser(void *data) /* remove any outstanding requests */ link = u->requests.head; while (link) { - debug(29, 5) ("authenticateFreeProxyAuthUser: removing request entry '%d'\n", link->data); + debug(29, 5) ("authenticateFreeProxyAuthUser: removing request entry '%p'\n", link->data); auth_user_request = link->data; tmplink = link; link = link->next; diff --git a/src/helper.cc b/src/helper.cc index 0201482d15..2db486d80a 100644 --- a/src/helper.cc +++ b/src/helper.cc @@ -1,6 +1,6 @@ /* - * $Id: helper.cc,v 1.22 2001/01/07 23:36:39 hno Exp $ + * $Id: helper.cc,v 1.23 2001/01/11 00:01:53 hno Exp $ * * DEBUG: section 29 Helper process maintenance * AUTHOR: Harvest Derived? @@ -555,6 +555,8 @@ helperStatefulCreate(const char *name) void helperFree(helper * hlp) { + if (!hlp) + return; /* note, don't free hlp->name, it probably points to static memory */ if (hlp->queue.head) debug(29, 0) ("WARNING: freeing %s helper with %d requests queued\n", @@ -565,6 +567,8 @@ helperFree(helper * hlp) void helperStatefulFree(statefulhelper * hlp) { + if (!hlp) + return; /* note, don't free hlp->name, it probably points to static memory */ if (hlp->queue.head) debug(29, 0) ("WARNING: freeing %s helper with %d requests queued\n", diff --git a/src/main.cc b/src/main.cc index e5c05b2c65..3d96c60e92 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,6 +1,6 @@ /* - * $Id: main.cc,v 1.329 2001/01/07 23:36:39 hno Exp $ + * $Id: main.cc,v 1.330 2001/01/11 00:01:53 hno Exp $ * * DEBUG: section 1 Startup and Main Loop * AUTHOR: Harvest Derived @@ -713,7 +713,6 @@ main(int argc, char **argv) idnsShutdown(); #endif redirectShutdown(); - authenticateShutdown(); eventAdd("SquidShutdown", SquidShutdown, NULL, (double) (wait + 1), 1); } eventRun(); @@ -939,6 +938,7 @@ SquidShutdown(void *unused) #endif releaseServerSockets(); commCloseAllSockets(); + authenticateShutdown(); #if USE_UNLINKD unlinkdClose(); #endif