Thanks Kris.

Keep them coming ;-)

Kris Verbeeck wrote:
> Hi,
> 
> Someone in our QA team tried the following test:
> 
>       telnet <host> 80
>       GET https://whatever.html HTTP/1.0
> 
> this resulted in a segfault for the child that handled the request.
> Agreed, this is not a normal HTTP request, but firing enough of them
> will surely DoS the server.
> 
> Our apache runs on Sparc/Solaris8 and 'httpd -l' gives:
> 
>   Compiled in modules:
>     core.c
>     mod_access.c
>     mod_cache.c
>     mod_disk_cache.c
>     mod_deflate.c
>     mod_jk.c
>     mod_log_config.c
>     mod_env.c
>     mod_setenvif.c
>     mod_ssl.c
>     prefork.c
>     http_core.c
>     mod_mime.c
>     mod_alias.c
> 
> Gdb told me that there was a null ppinter dereference in
> ap_cache_get_cache_type when it tried to compare the request's
> URL with the prefix from the configuration.
> 
> The patch will just return NULL when the URL is NULL and results
> in no caching for that request (which seems reasonable since there
> ios no URL to cache).
> 
> ps: I don't know whether the actual fix of this problem should
> be in cache_util.c or somewhere in the URI parsing routines.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> --- httpd-2.0.40/modules/experimental/cache_util.c    Sun Jun 23 08:10:00 2002
> +++ httpd-2.0.40-PATCHED/modules/experimental/cache_util.c    Mon Aug 26 17:28:37 
>2002
> @@ -104,6 +104,12 @@
>      const char *type = NULL;
>      int i;
>  
> +    /* we can't cache if there's no URL
> +     * fixes segfault for 'GET https://whatever.html HTTP/1.0' request
> +     * on HTTP port (e.g. 80)
> +     */
> +    if (!url) return NULL;
> +
>      /* loop through all the cacheenable entries */
>      for (i = 0; i < conf->cacheenable->nelts; i++) {
>          struct cache_enable *ent = 


Reply via email to