mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
process_cgi is more descriptive than replace_cmd.
It also affects query_string args. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94638 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -510,13 +510,13 @@ static apr_status_t run_cgi_child(apr_file_t **script_out,
|
|||||||
|
|
||||||
static apr_status_t default_build_command(const char **cmd, const char ***argv,
|
static apr_status_t default_build_command(const char **cmd, const char ***argv,
|
||||||
request_rec *r, apr_pool_t *p,
|
request_rec *r, apr_pool_t *p,
|
||||||
int replace_cmd, apr_cmdtype_e * type)
|
int process_cgi, apr_cmdtype_e * type)
|
||||||
{
|
{
|
||||||
int numwords, x, idx;
|
int numwords, x, idx;
|
||||||
char *w;
|
char *w;
|
||||||
const char *args = r->args;
|
const char *args = NULL;
|
||||||
|
|
||||||
if (replace_cmd) {
|
if (process_cgi) {
|
||||||
/* Allow suexec's "/" check to succeed */
|
/* Allow suexec's "/" check to succeed */
|
||||||
const char *argv0 = strrchr(r->filename, '/');
|
const char *argv0 = strrchr(r->filename, '/');
|
||||||
if (argv0 != NULL)
|
if (argv0 != NULL)
|
||||||
@@ -524,9 +524,15 @@ static apr_status_t default_build_command(const char **cmd, const char ***argv,
|
|||||||
else
|
else
|
||||||
argv0 = r->filename;
|
argv0 = r->filename;
|
||||||
*cmd = argv0;
|
*cmd = argv0;
|
||||||
|
args = r->args;
|
||||||
|
/* Do not process r->args if they contain an '=' assignment
|
||||||
|
*/
|
||||||
|
if (r->args && r->args[0] && !ap_strchr_c(r->args, '=')) {
|
||||||
|
args = r->args;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!args || !args[0] || ap_strchr_c(args, '=')) {
|
if (!args) {
|
||||||
numwords = 1;
|
numwords = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@@ -67,8 +67,8 @@
|
|||||||
* @param argv Pointer to the arguments to pass (may be overridden)
|
* @param argv Pointer to the arguments to pass (may be overridden)
|
||||||
* @param r The current request
|
* @param r The current request
|
||||||
* @param p The pool to allocate correct cmd/argv elements within.
|
* @param p The pool to allocate correct cmd/argv elements within.
|
||||||
* @param replace_cmd Set true if r->filename is valid and may
|
* @param process_cgi Set true if processing r->filename and r->args
|
||||||
* replace argv[0] and cmd, otherwise false
|
* as a CGI invocation, otherwise false
|
||||||
* @param type Set to APR_SHELLCMD or APR_PROGRAM on entry, may be
|
* @param type Set to APR_SHELLCMD or APR_PROGRAM on entry, may be
|
||||||
* changed to invoke the program with alternate semantics.
|
* changed to invoke the program with alternate semantics.
|
||||||
* @remark This callback may be registered by the os-specific module
|
* @remark This callback may be registered by the os-specific module
|
||||||
@@ -78,6 +78,6 @@
|
|||||||
APR_DECLARE_OPTIONAL_FN(apr_status_t, ap_cgi_build_command,
|
APR_DECLARE_OPTIONAL_FN(apr_status_t, ap_cgi_build_command,
|
||||||
(const char **cmd, const char ***argv,
|
(const char **cmd, const char ***argv,
|
||||||
request_rec *r, apr_pool_t *p,
|
request_rec *r, apr_pool_t *p,
|
||||||
int replace_cmd, apr_cmdtype_e *type));
|
int process_cgi, apr_cmdtype_e *type));
|
||||||
|
|
||||||
#endif /* _MOD_CGI_H */
|
#endif /* _MOD_CGI_H */
|
||||||
|
Reference in New Issue
Block a user