dgaudet 99/06/01 23:30:07
Modified: src CHANGES
src/main http_main.c
Log:
Piped error logs could cause a segfault if an error occured
during configuration after a restart.
PR: 4456
Submitted by: Aidan Cully <[EMAIL PROTECTED]>
Revision Changes Path
1.1364 +4 -0 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1363
retrieving revision 1.1364
diff -u -r1.1363 -r1.1364
--- CHANGES 1999/05/26 18:27:43 1.1363
+++ CHANGES 1999/06/02 06:30:03 1.1364
@@ -1,5 +1,9 @@
Changes with Apache 1.3.7
+ *) Piped error logs could cause a segfault if an error occured
+ during configuration after a restart.
+ [Aidan Cully <[EMAIL PROTECTED]>] PR#4456
+
*) If a "Location" field was stored in r->err_headers_out rather
than r->headers_out, redirect processing wouldn't find it and
the server would core dump on ap_escape_html(NULL).
1.440 +13 -7 apache-1.3/src/main/http_main.c
Index: http_main.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/main/http_main.c,v
retrieving revision 1.439
retrieving revision 1.440
diff -u -r1.439 -r1.440
--- http_main.c 1999/05/25 11:49:46 1.439
+++ http_main.c 1999/06/02 06:30:05 1.440
@@ -333,7 +333,9 @@
static other_child_rec *other_children;
#endif
+static pool *pglobal; /* Global pool */
static pool *pconf; /* Pool for config stuff */
+static pool *plog; /* Pool for error-logging files */
static pool *ptrans; /* Pool for per-transaction stuff */
static pool *pchild; /* Pool for httpd child stuff */
static pool *pcommands; /* Pool for -C and -c switches */
@@ -2104,7 +2106,7 @@
static void clean_parent_exit(int code)
{
/* Clear the pool - including any registered cleanups */
- ap_destroy_pool(pconf);
+ ap_destroy_pool(pglobal);
exit(code);
}
@@ -3579,7 +3581,9 @@
AMCSocketInitialize();
#endif /* WIN32 */
- pconf = ap_init_alloc();
+ pglobal = ap_init_alloc();
+ pconf = ap_make_sub_pool(pglobal);
+ plog = ap_make_sub_pool(pglobal);
ptrans = ap_make_sub_pool(pconf);
ap_util_init();
@@ -4415,7 +4419,8 @@
server_conf = ap_read_config(pconf, ptrans, ap_server_confname);
setup_listeners(pconf);
- ap_open_logs(server_conf, pconf);
+ ap_clear_pool(plog);
+ ap_open_logs(server_conf, plog);
ap_log_pid(pconf, ap_pid_fname);
ap_set_version(); /* create our server_version string */
ap_init_modules(pconf, server_conf);
@@ -4762,7 +4767,7 @@
#ifndef TPF
if (ap_standalone) {
- ap_open_logs(server_conf, pconf);
+ ap_open_logs(server_conf, plog);
ap_set_version();
ap_init_modules(pconf, server_conf);
version_locked++;
@@ -4805,7 +4810,7 @@
/* Yes this is called twice. */
ap_init_modules(pconf, server_conf);
version_locked++;
- ap_open_logs(server_conf, pconf);
+ ap_open_logs(server_conf, plog);
ap_init_modules(pconf, server_conf);
set_group_privs();
@@ -5855,7 +5860,8 @@
pparent = ap_make_sub_pool(pconf);
server_conf = ap_read_config(pconf, pparent, ap_server_confname);
- ap_open_logs(server_conf, pconf);
+ ap_clear_pool(plog);
+ ap_open_logs(server_conf, plog);
ap_set_version();
ap_init_modules(pconf, server_conf);
version_locked++;
@@ -6093,7 +6099,7 @@
ap_init_modules(pconf, server_conf);
ap_suexec_enabled = init_suexec();
version_locked++;
- ap_open_logs(server_conf, pconf);
+ ap_open_logs(server_conf, plog);
set_group_privs();
}