On 6/26/24 12:09 PM, cove...@apache.org wrote:
> Author: covener
> Date: Wed Jun 26 10:09:29 2024
> New Revision: 1918651
> 
> URL: http://svn.apache.org/viewvc?rev=1918651&view=rev
> Log:
> factor out IS_SLASH, perdir fix
> 
> in per-dir, the filename will be internally redirected, so / is OK too.
> 
> Modified:
>     httpd/httpd/trunk/include/ap_mmn.h
>     httpd/httpd/trunk/include/httpd.h
>     httpd/httpd/trunk/modules/mappers/mod_rewrite.c
>     httpd/httpd/trunk/server/util.c
> 

> Modified: httpd/httpd/trunk/include/httpd.h
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/include/httpd.h?rev=1918651&r1=1918650&r2=1918651&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/include/httpd.h (original)
> +++ httpd/httpd/trunk/include/httpd.h Wed Jun 26 10:09:29 2024
> @@ -2879,6 +2879,17 @@ AP_DECLARE(apr_status_t) ap_filepath_mer
>  #define apr_filepath_merge  ap_filepath_merge
>  #endif
>  
> +/* Win32/NetWare/OS2 need to check for both forward and back slashes
> + * in ap_normalize_path() and ap_escape_url().
> + */
> +#ifdef CASE_BLIND_FILESYSTEM
> +#define AP_IS_SLASH(s) ((s == '/') || (s == '\\'))
> +#define AP_SLASHES "/\\"
> +#else
> +#define AP_IS_SLASH(s) (s == '/')
> +#define AP_SLASHES "/"
> +#endif
> +
>  #ifdef __cplusplus
>  }
>  #endif
> 
> Modified: httpd/httpd/trunk/modules/mappers/mod_rewrite.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/mappers/mod_rewrite.c?rev=1918651&r1=1918650&r2=1918651&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/mappers/mod_rewrite.c (original)
> +++ httpd/httpd/trunk/modules/mappers/mod_rewrite.c Wed Jun 26 10:09:29 2024
> @@ -688,11 +688,8 @@ static int is_absolute_path(const char *
>  #ifndef WIN32

Don't we need to change the above to

#ifndef CASE_BLIND_FILESYSTEM

or if not shouldn't we do

return AP_IS_SLASH(path[0])

>      return (path[0] == '/');
>  #else
> -#define IS_SLASH(c) ((c) == '/' || (c) == '\\')
> -    /* "//", "\\", "x:/" and "x:\" are absolute paths on Windows */
> -    return ((IS_SLASH(path[0]) && path[1] == path[0])
> -            || (apr_isalpha(path[0]) && path[1] == ':' && 
> IS_SLASH(path[2])));
> -#undef IS_SLASH
> +    return ((AP_IS_SLASH(path[0]) && path[1] == path[0])
> +            || (apr_isalpha(path[0]) && path[1] == ':' && 
> AP_IS_SLASH(path[2])));
>  #endif
>  }
>  

Regards

RĂ¼diger

Reply via email to