From: Jeff Trawick Date: Wed, 7 May 2014 12:43:56 +0000 (+0000) Subject: mod_authn_socache: Fix creation of default socache_instance. Fixes crash X-Git-Tag: 2.4.10~261 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52f7cf9c456b7cc2bfc2902c13186f971d5b740c;p=apache mod_authn_socache: Fix creation of default socache_instance. Fixes crash on startup if default socache_provider is used and AuthnCacheEnable or AuthnCacheProvideFor is used. This problem has been introduced in r1531961. PR 56371. Submitted by: jkaluza Reviewed by: ylavic, jim, trawick git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1592991 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 3d9ed1e3c9..a1042bf5b6 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.4.10 + *) mod_authn_socache: Fix crash at startup in certain configurations. + PR 56371. (regression in 2.4.7) [Jan Kaluza] + *) mod_lua: Enforce the max post size allowed via r:parsebody() [Daniel Gruno] diff --git a/STATUS b/STATUS index b34ec272c6..b653f3c620 100644 --- a/STATUS +++ b/STATUS @@ -100,16 +100,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_authn_socache: Fix creation of default socache_instance. Fixes crash - on startup if default socache_provider is used and - AuthnCacheEnable or AuthnCacheProvideFor is used. - This problem has been introduced in r1531961. - PR 56371. - Submitted/Committed by: jkaluza - trunk patch: http://svn.apache.org/r1576233 - 2.4.x patch: trunk works - +1: ylavic, jim, trawick - * mod_proxy_fcgi: Don't crash when connect to the backend fails. trunk patch: http://svn.apache.org/r1590437 (and additional CHANGES tweak in r1592500) 2.4.x patch: trunk patch works other than CHANGES diff --git a/modules/aaa/mod_authn_socache.c b/modules/aaa/mod_authn_socache.c index f36d49c8ed..597ac863ed 100644 --- a/modules/aaa/mod_authn_socache.c +++ b/modules/aaa/mod_authn_socache.c @@ -87,6 +87,7 @@ static int authn_cache_post_config(apr_pool_t *pconf, apr_pool_t *plog, { apr_status_t rv; static struct ap_socache_hints authn_cache_hints = {64, 32, 60000000}; + const char *errmsg; if (!configured) { return OK; /* don't waste the overhead of creating mutex & cache */ @@ -99,6 +100,20 @@ static int authn_cache_post_config(apr_pool_t *pconf, apr_pool_t *plog, return 500; /* An HTTP status would be a misnomer! */ } + /* We have socache_provider, but do not have socache_instance. This should + * happen only when using "default" socache_provider, so create default + * socache_instance in this case. */ + if (socache_instance == NULL) { + errmsg = socache_provider->create(&socache_instance, NULL, + ptmp, pconf); + if (errmsg) { + ap_log_perror(APLOG_MARK, APLOG_CRIT, rv, plog, APLOGNO(02612) + "failed to create mod_socache_shmcb socache " + "instance: %s", errmsg); + return 500; + } + } + rv = ap_global_mutex_create(&authn_cache_mutex, NULL, authn_cache_id, NULL, s, pconf, 0); if (rv != APR_SUCCESS) {