fielding 97/02/10 02:24:50
Modified: src CHANGES http_core.c http_request.c
Log:
Fix condition where, if a bad directive occurs in .htaccess, and
sub_request() goes first to this directory, then log_reason() will
SIGSEGV because it doesn't have initialized r->per_dir_config.
[reported in PR#162 by Petr Lampa]
Submitted by: Marc Slemko and Dean Gaudet
Reviewed by: Roy Fielding
Revision Changes Path
1.150 +6 -1 apache/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache/src/CHANGES,v
retrieving revision 1.149
retrieving revision 1.150
diff -C3 -r1.149 -r1.150
*** CHANGES 1997/02/08 01:33:56 1.149
--- CHANGES 1997/02/10 10:24:48 1.150
***************
*** 2,12 ****
*) Fix handling of unsigned ints in ap_snprintf() on some chips such
as the DEC Alpha which is 64-bit but uses 32-bit ints.
! [Dean Gaudet, Ken the Rodent]
*) Return a 302 response code to the client when sending a redirect
due to a missing trailing '/' on a directory instead of a 301; now
it is cacheable. [Markus Gyger]
*) Fix handling of lang_index in is_variant_better(). This was
causing problems which resulted in the server sending the
--- 2,17 ----
*) Fix handling of unsigned ints in ap_snprintf() on some chips such
as the DEC Alpha which is 64-bit but uses 32-bit ints.
! [Dean Gaudet, Ken Coar]
*) Return a 302 response code to the client when sending a redirect
due to a missing trailing '/' on a directory instead of a 301; now
it is cacheable. [Markus Gyger]
+
+ *) Fix condition where, if a bad directive occurs in .htaccess, and
+ sub_request() goes first to this directory, then log_reason() will
+ SIGSEGV because it doesn't have initialized r->per_dir_config.
+ [PR#162 from Petr Lampa, fix by Marc Slemko and Dean Gaudet]
*) Fix handling of lang_index in is_variant_better(). This was
causing problems which resulted in the server sending the
1.66 +3 -2 apache/src/http_core.c
Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_core.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -C3 -r1.65 -r1.66
*** http_core.c 1997/02/10 09:40:33 1.65
--- http_core.c 1997/02/10 10:24:48 1.66
***************
*** 313,321 ****
core_dir_config *dir_conf;
/* If we haven't checked the host name, and we want to */
! dir_conf = (core_dir_config *)get_module_config(dir_config,
&core_module);
! if (type != REMOTE_NOLOOKUP && conn->remote_host == NULL &&
dir_conf->hostname_lookups)
{
#ifdef STATUS
int old_stat = update_child_status(conn->child_num,
--- 313,322 ----
core_dir_config *dir_conf;
/* If we haven't checked the host name, and we want to */
! if (dir_config)
! dir_conf = (core_dir_config *)get_module_config(dir_config,
&core_module);
! if ((!dir_conf) || (type != REMOTE_NOLOOKUP && conn->remote_host == NULL
&& dir_conf->hostname_lookups))
{
#ifdef STATUS
int old_stat = update_child_status(conn->child_num,
1.41 +1 -0 apache/src/http_request.c
Index: http_request.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_request.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -C3 -r1.40 -r1.41
*** http_request.c 1997/01/25 15:44:39 1.40
--- http_request.c 1997/02/10 10:24:49 1.41
***************
*** 697,702 ****
--- 697,703 ----
rnew->server = r->server;
rnew->request_config = create_request_config (rnew->pool);
rnew->htaccess = r->htaccess; /* copy htaccess cache */
+ rnew->per_dir_config = r->server->lookup_defaults;
set_sub_req_protocol (rnew, r);
rnew->uri = "INTERNALLY GENERATED file-relative req";