You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by bn...@apache.org on 2006/07/25 00:33:43 UTC

svn commit: r425210 - /httpd/httpd/trunk/modules/aaa/mod_authn_core.c

Author: bnicholes
Date: Mon Jul 24 15:33:43 2006
New Revision: 425210

URL: http://svn.apache.org/viewvc?rev=425210&view=rev
Log:
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

Modified:
    httpd/httpd/trunk/modules/aaa/mod_authn_core.c

Modified: httpd/httpd/trunk/modules/aaa/mod_authn_core.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/aaa/mod_authn_core.c?rev=425210&r1=425209&r2=425210&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/aaa/mod_authn_core.c (original)
+++ httpd/httpd/trunk/modules/aaa/mod_authn_core.c Mon Jul 24 15:33:43 2006
@@ -191,6 +191,7 @@
     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,
@@ -222,6 +223,19 @@
                            "> 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;
@@ -229,7 +243,7 @@
 
     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 */