You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Alexei Kosut <ak...@hyperreal.com> on 1996/06/17 22:43:52 UTC
cvs commit: apache/src alloc.c http_protocol.c mod_cgi.c mod_proxy.c
akosut 96/06/17 13:43:51
Modified: src alloc.c http_protocol.c mod_cgi.c mod_proxy.c
Log:
Various OS/2 patches.
Submitted by: Garey Smiley
Revision Changes Path
1.6 +15 -3 apache/src/alloc.c
Index: alloc.c
===================================================================
RCS file: /export/home/cvs/apache/src/alloc.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C3 -r1.5 -r1.6
*** alloc.c 1996/06/03 12:04:19 1.5
--- alloc.c 1996/06/17 20:43:45 1.6
***************
*** 889,902 ****
if (pipe_out) {
close (out_fds[1]);
*pipe_out = fdopen (out_fds[0], "r");
!
if (*pipe_out) note_cleanups_for_file (p, *pipe_out);
}
if (pipe_in) {
close (in_fds[0]);
*pipe_in = fdopen (in_fds[1], "w");
if (*pipe_in) note_cleanups_for_file (p, *pipe_in);
}
--- 889,912 ----
if (pipe_out) {
close (out_fds[1]);
+ #ifdef __EMX__
+ /* Need binary mode set for OS/2. */
+ *pipe_out = fdopen (out_fds[0], "rb");
+ #else
*pipe_out = fdopen (out_fds[0], "r");
! #endif
!
if (*pipe_out) note_cleanups_for_file (p, *pipe_out);
}
if (pipe_in) {
close (in_fds[0]);
+ #ifdef __EMX__
+ /* Need binary mode set for OS/2 */
+ *pipe_in = fdopen (in_fds[1], "wb");
+ #else
*pipe_in = fdopen (in_fds[1], "w");
+ #endif
if (*pipe_in) note_cleanups_for_file (p, *pipe_in);
}
***************
*** 1040,1053 ****
if (pipe_out) {
close (out_fds[1]);
! *pipe_out = fdopen (out_fds[0], "r");
if (*pipe_out) note_cleanups_for_file (p, *pipe_out);
}
if (pipe_in) {
close (in_fds[0]);
! *pipe_in = fdopen (in_fds[1], "w");
if (*pipe_in) note_cleanups_for_file (p, *pipe_in);
}
--- 1050,1065 ----
if (pipe_out) {
close (out_fds[1]);
! /* Need binary mode set for OS/2. */
! *pipe_out = fdopen (out_fds[0], "rb");
if (*pipe_out) note_cleanups_for_file (p, *pipe_out);
}
if (pipe_in) {
close (in_fds[0]);
! /* Need binary mode set for OS/2. */
! *pipe_in = fdopen (in_fds[1], "wb");
if (*pipe_in) note_cleanups_for_file (p, *pipe_in);
}
1.25 +16 -0 apache/src/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -C3 -r1.24 -r1.25
*** http_protocol.c 1996/06/17 20:17:02 1.24
--- http_protocol.c 1996/06/17 20:43:46 1.25
***************
*** 241,246 ****
--- 241,251 ----
* But for now...
*/
+ #ifdef __EMX__
+ /* Variable for OS/2 fix below. */
+ int loop;
+ #endif
+
/* A proxy request contains a ':' early on, but not as first character */
for (s=uri; s != '\0'; s++)
if (!isalnum(*s) && *s != '+' && *s != '-' && *s != '.') break;
***************
*** 254,259 ****
--- 259,275 ----
{
r->proxyreq = 0;
r->uri = getword (r->pool, &uri, '?');
+
+ #ifdef __EMX__
+ /* Handle path translations for OS/2 and plug security hole. */
+ /* This will prevent "http://www.wherever.com/..\..\/" from
+ returning a directory for the root drive. */
+ for (loop = 0; loop <= strlen(r->uri); ++loop) {
+ if (r->uri[loop] == '\\')
+ r->uri[loop] = '/';
+ };
+ #endif
+
if (*uri) r->args= uri;
else r->args = NULL;
}
1.10 +1 -1 apache/src/mod_cgi.c
Index: mod_cgi.c
===================================================================
RCS file: /export/home/cvs/apache/src/mod_cgi.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -C3 -r1.9 -r1.10
*** mod_cgi.c 1996/06/17 20:25:13 1.9
--- mod_cgi.c 1996/06/17 20:43:47 1.10
***************
*** 379,385 ****
#ifdef __EMX__
if (nph) {
while (fgets(argsbuffer, HUGE_STRING_LEN-1, script_in) != NULL) {
! fputs(argsbuffer, r->connection->client);
}
}
#endif
--- 379,385 ----
#ifdef __EMX__
if (nph) {
while (fgets(argsbuffer, HUGE_STRING_LEN-1, script_in) != NULL) {
! bputs(argsbuffer, r->connection->client);
}
}
#endif
1.28 +8 -0 apache/src/mod_proxy.c
Index: mod_proxy.c
===================================================================
RCS file: /export/home/cvs/apache/src/mod_proxy.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -C3 -r1.27 -r1.28
*** mod_proxy.c 1996/06/13 21:11:57 1.27
--- mod_proxy.c 1996/06/17 20:43:48 1.28
***************
*** 2081,2092 ****
--- 2081,2100 ----
*p='/';
++p;
}
+ #ifdef __EMX__
+ /* Under OS/2 use rename. */
+ if (rename(c->tempfile, c->filename) == -1)
+ log_uerror("rename", c->filename, "proxy: error renaming cache file", s);
+ }
+ #else
+
if (link(c->tempfile, c->filename) == -1)
log_uerror("link", c->filename, "proxy: error linking cache file", s);
}
if (unlink(c->tempfile) == -1)
log_uerror("unlink", c->tempfile, "proxy: error deleting temp file",s);
+ #endif
garbage_coll(c->req);
}