to duplicate LoadModule or AddModule directives (or a missing
ClearModuleList directive).
LoadModule dupcheck (for 2.0) by Brian Pane <bpane@pacbell.net>
Ported and added AddModule dupcheck by Will Rowe
Identified by an old collegue of Will's who tripped over this.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@91836
13f79535-47bb-0310-9956-
ffa450edef68
Changes with Apache 1.3.23
+ *) Prevent an Apache module from being loaded or added twice due
+ to duplicate LoadModule or AddModule directives (or a missing
+ ClearModuleList directive).
+ [William Rowe, Brian Pane <bpane@pacbell.net>]
+
*) Add checkgid app to do run-time validation of Group directive
values which might cause the server to fall over, but which
are syntactically correct. [Ken Coar]
static const char *add_module_command(cmd_parms *cmd, void *dummy, char *arg)
{
+ module *modp;
const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
if (err != NULL) {
return err;
}
+ for (modp = top_module; modp; modp = modp->next) {
+ if (modp->name != NULL && strcmp(modp->name, arg) == 0) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, cmd->server,
+ "module %s is already added, skipping", arg);
+ return NULL;
+ }
+ }
+
if (!ap_add_named_module(arg)) {
return ap_pstrcat(cmd->pool, "Cannot add module via name '", arg,
"': not in list of loaded modules", NULL);
modie = (moduleinfo *)sconf->loaded_modules->elts;
for (i = 0; i < sconf->loaded_modules->nelts; i++) {
modi = &modie[i];
- if (modi->name != NULL && strcmp(modi->name, modname) == 0)
+ if (modi->name != NULL && strcmp(modi->name, modname) == 0) {
+ ap_log_error(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, cmd->server,
+ "module %s is already loaded, skipping", modname);
return NULL;
+ }
}
modi = ap_push_array(sconf->loaded_modules);
modi->name = modname;