fielding    97/04/17 19:56:15

  Modified:    src       CHANGES mod_dir.c
  Log:
  Fixed SIGSEGV problem when a DirectoryIndex file is also the source
  of an external redirection.  The problem was that the redirection would be
  seen as a subrequest, but the redirection header fields were not being
  promoted to the main response.
  
  Submitted by: Roy Fielding and Paul Sutton
  Reviewed by: Dean Gaudet, Randy Terbush, Jim Jagielski
  
  Revision  Changes    Path
  1.237     +6 -0      apache/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache/src/CHANGES,v
  retrieving revision 1.236
  retrieving revision 1.237
  diff -C3 -r1.236 -r1.237
  *** CHANGES   1997/04/17 02:52:50     1.236
  --- CHANGES   1997/04/18 02:56:13     1.237
  ***************
  *** 1,5 ****
  --- 1,11 ----
    Changes with Apache 1.2
    
  +   *) Fixed SIGSEGV problem when a DirectoryIndex file is also the source
  +      of an external redirection.  [Roy Fielding and Paul Sutton]
  + 
  +   *) Configure would create a broken Makefile if the configuration file
  +      contained a commented-out Rule.  [Roy Fielding]
  + 
      *) Promote per_dir_config and subprocess_env from the subrequest to the
         main request in mod_negotiation.  In particular this fixes a bug
         where <Files> sections wouldn't properly apply to negotiated content.
  
  
  
  1.25      +13 -0     apache/src/mod_dir.c
  
  Index: mod_dir.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/mod_dir.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -C3 -r1.24 -r1.25
  *** mod_dir.c 1997/04/06 07:43:41     1.24
  --- mod_dir.c 1997/04/18 02:56:14     1.25
  ***************
  *** 820,825 ****
  --- 820,838 ----
            return OK;
        }
    
  +     /* If the request returned a redirect, propagate it to the client */
  + 
  +     if (is_HTTP_REDIRECT(rr->status)) {
  +         error_notfound = rr->status;
  +         r->notes = overlay_tables(r->pool, r->notes, rr->notes);
  +         r->headers_out = overlay_tables(r->pool, r->headers_out,
  +                                                 rr->headers_out);
  +         r->err_headers_out = overlay_tables(r->pool, r->err_headers_out,
  +                                                     rr->err_headers_out);
  +         destroy_sub_req(rr);
  +         return error_notfound;
  +     }
  +             
        /* If the request returned something other than 404 (or 200),
         * it means the module encountered some sort of problem. To be
         * secure, we should return the error, rather than create
  
  
  

Reply via email to