You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by st...@hyperreal.org on 1998/08/06 01:07:55 UTC
cvs commit: apache-1.3/src/main util_script.c
stoddard 98/08/05 16:07:55
Modified: src/main util_script.c
Log:
Fix PR2495 (Win32): quote script filenames to handle white space
Revision Changes Path
1.124 +9 -6 apache-1.3/src/main/util_script.c
Index: util_script.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/main/util_script.c,v
retrieving revision 1.123
retrieving revision 1.124
diff -u -r1.123 -r1.124
--- util_script.c 1998/08/03 09:15:00 1.123
+++ util_script.c 1998/08/05 23:07:54 1.124
@@ -779,6 +779,7 @@
int i, sz;
char *dot;
char *exename;
+ char *quoted_filename;
int is_exe = 0;
STARTUPINFO si;
PROCESS_INFORMATION pi;
@@ -792,6 +793,8 @@
interpreter[0] = 0;
pid = -1;
+ quoted_filename = ap_pstrcat(r->pool, "\"", r->filename, "\"", NULL);
+
exename = strrchr(r->filename, '/');
if (!exename) {
exename = strrchr(r->filename, '\\');
@@ -877,7 +880,7 @@
* When the CGI is a straight binary executable,
* we can run it as is
*/
- pCommand = r->filename;
+ pCommand = quoted_filename;
}
else if (is_script) {
/* When an interpreter is needed, we need to create
@@ -885,14 +888,14 @@
* followed by the CGI script name.
*/
pCommand = ap_pstrcat(r->pool, interpreter + 2, " ",
- r->filename, NULL);
+ quoted_filename, NULL);
}
else {
/* If not an executable or script, just execute it
* from a command prompt.
*/
pCommand = ap_pstrcat(r->pool, SHELL_PATH, " /C ",
- r->filename, NULL);
+ quoted_filename, NULL);
}
}
else {
@@ -938,16 +941,16 @@
* so now build the command line.
*/
if (is_exe || is_binary) {
- pCommand = ap_pstrcat(r->pool, r->filename, " ",
+ pCommand = ap_pstrcat(r->pool, quoted_filename, " ",
arguments, NULL);
}
else if (is_script) {
pCommand = ap_pstrcat(r->pool, interpreter + 2, " ",
- r->filename, " ", arguments, NULL);
+ quoted_filename, " ", arguments, NULL);
}
else {
pCommand = ap_pstrcat(r->pool, SHELL_PATH, " /C ",
- r->filename, " ", arguments, NULL);
+ quoted_filename, " ", arguments, NULL);
}
}