httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From c...@hyperreal.org
Subject cvs commit: apache-1.3/src/main http_protocol.c
Date Wed, 02 Jun 1999 20:11:20 GMT
coar        99/06/02 13:11:20

  Modified:    src      CHANGES
               src/main http_protocol.c
  Log:
  	Trap (with an errorlog entry) malformed redirects from modules;
  	i.e., that fail to set a Location field.
  
  Revision  Changes    Path
  1.1366    +3 -2      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1365
  retrieving revision 1.1366
  diff -u -r1.1365 -r1.1366
  --- CHANGES	1999/06/02 20:01:50	1.1365
  +++ CHANGES	1999/06/02 20:11:16	1.1366
  @@ -9,8 +9,9 @@
   
     *) 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).
  -     [Doug MacEachern, Ken Coar]
  +     the server would core dump on ap_escape_html(NULL).  Check both
  +     tables and raise HTTP_INTERNAL_SERVER_ERROR with a log message
  +     if Location isn't set.  [Doug MacEachern, Ken Coar]
   
     *) Add RULE_EXPAT, the src/lib/ directory structure, and a modified copy
        of the Expat 1.0.2 distribution. [Greg Stein]
  
  
  
  1.269     +20 -4     apache-1.3/src/main/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/main/http_protocol.c,v
  retrieving revision 1.268
  retrieving revision 1.269
  diff -u -r1.268 -r1.269
  --- http_protocol.c	1999/05/26 18:28:06	1.268
  +++ http_protocol.c	1999/06/02 20:11:19	1.269
  @@ -2367,9 +2367,24 @@
           r->err_headers_out = tmp;
           ap_clear_table(r->err_headers_out);
   
  -        if ((location != NULL) && *location
  -            && (ap_is_HTTP_REDIRECT(status) || status == HTTP_CREATED)) {
  -            ap_table_setn(r->headers_out, "Location", location);
  +        if (ap_is_HTTP_REDIRECT(status) || (status == HTTP_CREATED)) {
  +	    if ((location != NULL) && *location) {
  +		ap_table_setn(r->headers_out, "Location", location);
  +	    }
  +	    else {
  +		/*
  +		 * We're supposed to tell the client to go somewhere,
  +		 * but the destination was omitted.  Turn this into
  +		 * a 500 status with an explanatory note in the error log.
  +		 */
  +		ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
  +		              "resource created or redirection requested "
  +			      "(status=%03d) but no Location field set "
  +			      "(URI=%s)",
  +			      r->status, r->unparsed_uri);
  +		r->status = status = HTTP_INTERNAL_SERVER_ERROR;
  +		r->status_line = NULL;
  +	    }
   	}
   
           r->content_language = NULL;
  @@ -2631,7 +2646,8 @@
   		&& (h1 = ap_table_get(r->notes, "verbose-error-to")) != NULL
   		&& (strcmp(h1, "*") == 0)) {
   	        ap_rvputs(r, error_notes, "<P>\n", NULL);
  -	    } else {
  +	    }
  +	    else {
   	        ap_rvputs(r, "The server encountered an internal error or\n"
   	             "misconfiguration and was unable to complete\n"
   	             "your request.<P>\n"
  
  
  

Mime
View raw message