mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
mod_cgi: log cgi script stderr to ScriptLog, use APLOGNO for log_scripterror
errors. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1626978 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -1 +1 @@
|
|||||||
2809
|
2814
|
||||||
|
@@ -162,7 +162,7 @@ AP_INIT_TAKE1("ScriptLogBuffer", set_scriptlog_buffer, NULL, RSRC_CONF,
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int log_scripterror(request_rec *r, cgi_server_conf * conf, int ret,
|
static int log_scripterror(request_rec *r, cgi_server_conf * conf, int ret,
|
||||||
apr_status_t rv, char *error)
|
apr_status_t rv, char *logno, char *error)
|
||||||
{
|
{
|
||||||
apr_file_t *f = NULL;
|
apr_file_t *f = NULL;
|
||||||
apr_finfo_t finfo;
|
apr_finfo_t finfo;
|
||||||
@@ -170,7 +170,7 @@ static int log_scripterror(request_rec *r, cgi_server_conf * conf, int ret,
|
|||||||
int log_flags = rv ? APLOG_ERR : APLOG_ERR;
|
int log_flags = rv ? APLOG_ERR : APLOG_ERR;
|
||||||
|
|
||||||
ap_log_rerror(APLOG_MARK, log_flags, rv, r,
|
ap_log_rerror(APLOG_MARK, log_flags, rv, r,
|
||||||
"%s: %s", error, r->filename);
|
"%s%s: %s", logno ? logno : "", error, r->filename);
|
||||||
|
|
||||||
/* XXX Very expensive mainline case! Open, then getfileinfo! */
|
/* XXX Very expensive mainline case! Open, then getfileinfo! */
|
||||||
if (!conf->logname ||
|
if (!conf->logname ||
|
||||||
@@ -203,6 +203,7 @@ static apr_status_t log_script_err(request_rec *r, apr_file_t *script_err)
|
|||||||
char argsbuffer[HUGE_STRING_LEN];
|
char argsbuffer[HUGE_STRING_LEN];
|
||||||
char *newline;
|
char *newline;
|
||||||
apr_status_t rv;
|
apr_status_t rv;
|
||||||
|
cgi_server_conf *conf = ap_get_module_config(r->server->module_config, &cgi_module);
|
||||||
|
|
||||||
while ((rv = apr_file_gets(argsbuffer, HUGE_STRING_LEN,
|
while ((rv = apr_file_gets(argsbuffer, HUGE_STRING_LEN,
|
||||||
script_err)) == APR_SUCCESS) {
|
script_err)) == APR_SUCCESS) {
|
||||||
@@ -210,8 +211,7 @@ static apr_status_t log_script_err(request_rec *r, apr_file_t *script_err)
|
|||||||
if (newline) {
|
if (newline) {
|
||||||
*newline = '\0';
|
*newline = '\0';
|
||||||
}
|
}
|
||||||
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01215)
|
log_scripterror(r, conf, r->status, 0, APLOGNO(01215), argsbuffer);
|
||||||
"%s", argsbuffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
@@ -774,24 +774,24 @@ static int cgi_handler(request_rec *r)
|
|||||||
conf = ap_get_module_config(r->server->module_config, &cgi_module);
|
conf = ap_get_module_config(r->server->module_config, &cgi_module);
|
||||||
|
|
||||||
if (!(ap_allow_options(r) & OPT_EXECCGI) && !is_scriptaliased(r))
|
if (!(ap_allow_options(r) & OPT_EXECCGI) && !is_scriptaliased(r))
|
||||||
return log_scripterror(r, conf, HTTP_FORBIDDEN, 0,
|
return log_scripterror(r, conf, HTTP_FORBIDDEN, 0, APLOGNO(02809),
|
||||||
"Options ExecCGI is off in this directory");
|
"Options ExecCGI is off in this directory");
|
||||||
if (nph && is_included)
|
if (nph && is_included)
|
||||||
return log_scripterror(r, conf, HTTP_FORBIDDEN, 0,
|
return log_scripterror(r, conf, HTTP_FORBIDDEN, 0, APLOGNO(02810),
|
||||||
"attempt to include NPH CGI script");
|
"attempt to include NPH CGI script");
|
||||||
|
|
||||||
if (r->finfo.filetype == APR_NOFILE)
|
if (r->finfo.filetype == APR_NOFILE)
|
||||||
return log_scripterror(r, conf, HTTP_NOT_FOUND, 0,
|
return log_scripterror(r, conf, HTTP_NOT_FOUND, 0, APLOGNO(02811),
|
||||||
"script not found or unable to stat");
|
"script not found or unable to stat");
|
||||||
if (r->finfo.filetype == APR_DIR)
|
if (r->finfo.filetype == APR_DIR)
|
||||||
return log_scripterror(r, conf, HTTP_FORBIDDEN, 0,
|
return log_scripterror(r, conf, HTTP_FORBIDDEN, 0, APLOGNO(02812),
|
||||||
"attempt to invoke directory as script");
|
"attempt to invoke directory as script");
|
||||||
|
|
||||||
if ((r->used_path_info == AP_REQ_REJECT_PATH_INFO) &&
|
if ((r->used_path_info == AP_REQ_REJECT_PATH_INFO) &&
|
||||||
r->path_info && *r->path_info)
|
r->path_info && *r->path_info)
|
||||||
{
|
{
|
||||||
/* default to accept */
|
/* default to accept */
|
||||||
return log_scripterror(r, conf, HTTP_NOT_FOUND, 0,
|
return log_scripterror(r, conf, HTTP_NOT_FOUND, 0, APLOGNO(02813),
|
||||||
"AcceptPathInfo off disallows user's path");
|
"AcceptPathInfo off disallows user's path");
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user