From: Jim Jagielski Date: Thu, 17 Apr 2014 13:39:01 +0000 (+0000) Subject: Merge r1531672 from trunk: X-Git-Tag: 2.4.10~321 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=80fd9246cc8e746df8fe4fd7d5c75e3297223602;p=apache Merge r1531672 from trunk: mod_auth_form: Make sure the optional functions are loaded even when the AuthFormProvider isn't specified. Submitted by: minfrin Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1588247 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index cd033b689f..a8e9a82555 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.4.10 + *) mod_auth_form: Make sure the optional functions are loaded even when + the AuthFormProvider isn't specified. [Graham Leggett] + *) mod_ssl: avoid processing bogus SSLCertificateKeyFile values (and logging garbled file names). PR 56306. [Kaspar Brand] diff --git a/STATUS b/STATUS index d1529b51e4..8b9b544ed8 100644 --- a/STATUS +++ b/STATUS @@ -100,11 +100,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_auth_form: Make sure the optional functions are loaded even when - the AuthFormProvider isn't specified. PR 56351. - trunk patch: https://svn.apache.org/r1531672 - 2.4.x patch: trunk patch works, modulo CHANGES - +1: minfrin, jim, ylavic PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/aaa/mod_auth_form.c b/modules/aaa/mod_auth_form.c index 474a9de235..13d9243e5b 100644 --- a/modules/aaa/mod_auth_form.c +++ b/modules/aaa/mod_auth_form.c @@ -173,25 +173,6 @@ static const char *add_authn_provider(cmd_parms * cmd, void *config, "Form Authentication", newp->provider_name); } - if (!ap_session_load_fn || !ap_session_get_fn || !ap_session_set_fn) { - ap_session_load_fn = APR_RETRIEVE_OPTIONAL_FN(ap_session_load); - ap_session_get_fn = APR_RETRIEVE_OPTIONAL_FN(ap_session_get); - ap_session_set_fn = APR_RETRIEVE_OPTIONAL_FN(ap_session_set); - if (!ap_session_load_fn || !ap_session_get_fn || !ap_session_set_fn) { - return "You must load mod_session to enable the mod_auth_form " - "functions"; - } - } - - if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { - ap_request_insert_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_insert_filter); - ap_request_remove_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_remove_filter); - if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { - return "You must load mod_request to enable the mod_auth_form " - "functions"; - } - } - /* Add it to the list now. */ if (!conf->providers) { conf->providers = newp; @@ -567,6 +548,7 @@ static apr_status_t get_session_auth(request_rec * r, { const char *authname = ap_auth_name(r); session_rec *z = NULL; + ap_session_load_fn(r, &z); if (user) { @@ -1271,8 +1253,40 @@ static int authenticate_form_redirect_handler(request_rec * r) } +static int authenticate_form_post_config(apr_pool_t *pconf, apr_pool_t *plog, + apr_pool_t *ptemp, server_rec *s) +{ + + if (!ap_session_load_fn || !ap_session_get_fn || !ap_session_set_fn) { + ap_session_load_fn = APR_RETRIEVE_OPTIONAL_FN(ap_session_load); + ap_session_get_fn = APR_RETRIEVE_OPTIONAL_FN(ap_session_get); + ap_session_set_fn = APR_RETRIEVE_OPTIONAL_FN(ap_session_set); + if (!ap_session_load_fn || !ap_session_get_fn || !ap_session_set_fn) { + ap_log_error(APLOG_MARK, APLOG_CRIT, 0, NULL, APLOGNO() + "You must load mod_session to enable the mod_auth_form " + "functions"); + return !OK; + } + } + + if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { + ap_request_insert_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_insert_filter); + ap_request_remove_filter_fn = APR_RETRIEVE_OPTIONAL_FN(ap_request_remove_filter); + if (!ap_request_insert_filter_fn || !ap_request_remove_filter_fn) { + ap_log_error(APLOG_MARK, APLOG_CRIT, 0, NULL, APLOGNO() + "You must load mod_request to enable the mod_auth_form " + "functions"); + return !OK; + } + } + + return OK; +} + static void register_hooks(apr_pool_t * p) { + ap_hook_post_config(authenticate_form_post_config,NULL,NULL,APR_HOOK_MIDDLE); + #if AP_MODULE_MAGIC_AT_LEAST(20080403,1) ap_hook_check_authn(authenticate_form_authn, NULL, NULL, APR_HOOK_MIDDLE, AP_AUTH_INTERNAL_PER_CONF);