From: Ruediger Pluem Date: Wed, 26 Jul 2006 14:20:48 +0000 (+0000) Subject: Merge r425210 from trunk: X-Git-Tag: 2.2.3~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=21573bedcc803c2dbb6e7d3502df5f7f8096dd38;p=thirdparty%2Fapache%2Fhttpd.git Merge r425210 from trunk: * Add a check to make sure that the base provider and the alias names are different and also that the alias has not been registered before. PR: 40051 Submitted by: bnicholes Reviewed by: bnicholes, rpluem, fielding git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@425740 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 2cf28306767..1e13aaecf72 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.2.3 + *) mod_authn_alias: Add a check to make sure that the base provider and the + alias names are different and also that the alias has not been registered + before. PR 40051. [Brad Nicholes] + *) mod_authnz_ldap: Fix a problem with invalid auth error detection for LDAP client SDKs that don't support the LDAP_SECURITY_ERROR macro. PR 39529. [Ray Price , Josh Fenlason ] diff --git a/STATUS b/STATUS index c83f048cc6a..86a1eb2cbe5 100644 --- a/STATUS +++ b/STATUS @@ -76,11 +76,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_authn_alias: Add a check to make sure that the base provider - and the alias names are different and also that the alias has - not been registered before. PR#40051 - http://issues.apache.org/bugzilla/attachment.cgi?id=18636 - +1: bnicholes, rpluem, fielding PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/modules/aaa/mod_authn_alias.c b/modules/aaa/mod_authn_alias.c index b8b7c190dfb..d306f67af58 100644 --- a/modules/aaa/mod_authn_alias.c +++ b/modules/aaa/mod_authn_alias.c @@ -130,6 +130,7 @@ static const char *authaliassection(cmd_parms *cmd, void *mconfig, const char *a char *provider_alias; char *provider_name; const char *errmsg; + const authn_provider *provider = NULL; ap_conf_vector_t *new_auth_config = ap_create_per_dir_config(cmd->pool); authn_alias_srv_conf *authcfg = (authn_alias_srv_conf *)ap_get_module_config(cmd->server->module_config, @@ -161,6 +162,19 @@ static const char *authaliassection(cmd_parms *cmd, void *mconfig, const char *a "> directive requires additional arguments", NULL); } + if (strcasecmp(provider_name, provider_alias) == 0) { + return apr_pstrcat(cmd->pool, + "The alias provider name must be different from the base provider name.", NULL); + } + + /* Look up the alias provider to make sure that it hasn't already been registered. */ + provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP, provider_alias, "0"); + if (provider) { + return apr_pstrcat(cmd->pool, "The alias provider ", provider_alias, + " has already be registered previously as either a base provider or an alias provider.", + NULL); + } + /* walk the subsection configuration to get the per_dir config that we will merge just before the real provider is called. */ cmd->override = OR_ALL|ACCESS_CONF; @@ -168,7 +182,7 @@ static const char *authaliassection(cmd_parms *cmd, void *mconfig, const char *a if (!errmsg) { provider_alias_rec *prvdraliasrec = apr_pcalloc(cmd->pool, sizeof(provider_alias_rec)); - const authn_provider *provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP, provider_name,"0"); + provider = ap_lookup_provider(AUTHN_PROVIDER_GROUP, provider_name, "0"); /* Save off the new directory config along with the original provider name and function pointer data */