From: William A. Rowe Jr Date: Sat, 18 May 2002 17:22:23 +0000 (+0000) Subject: Resolve the EXEC_ON_READ bit for ServerRoot and other modules that test X-Git-Tag: 2.0.37~339 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f93d4762ccb9987f953237ad9462d31e5fabc82;p=thirdparty%2Fapache%2Fhttpd.git Resolve the EXEC_ON_READ bit for ServerRoot and other modules that test the directive context. Should eliminate the segfault. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95171 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/core.c b/server/core.c index 9884a3f2091..5a38ab023b1 100644 --- a/server/core.c +++ b/server/core.c @@ -983,13 +983,20 @@ AP_DECLARE(const char *) ap_check_cmd_context(cmd_parms *cmd, " cannot occur within section", NULL); } - if ((forbidden & NOT_IN_DIR_LOC_FILE) == NOT_IN_DIR_LOC_FILE - && cmd->path != NULL) { - return apr_pstrcat(cmd->pool, cmd->cmd->name, gt, - " cannot occur within " - "section", NULL); + if ((forbidden & NOT_IN_DIR_LOC_FILE) == NOT_IN_DIR_LOC_FILE) { + if (cmd->path != NULL) { + return apr_pstrcat(cmd->pool, cmd->cmd->name, gt, + " cannot occur within " + "section", NULL); + } + if (cmd->cmd->req_override & EXEC_ON_READ) { + /* EXEC_ON_READ must be NOT_IN_DIR_LOC_FILE, if not, it will + * (deliberately) segfault below in the individual tests... + */ + return NULL; + } } - + if (((forbidden & NOT_IN_DIRECTORY) && ((found = find_parent(cmd->directive, "directive, "