httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexei Kosut <ako...@hyperreal.org>
Subject cvs commit: apachen/src/main http_core.c
Date Tue, 09 Sep 1997 18:39:20 GMT
akosut      97/09/09 11:39:19

  Modified:    src/main http_core.c
  Log:
  Canonicalize Windows pathnames in <Directory> and <Files> sections, so
  they will match the filenames you expect them to match. Also do
  case-insentitive matching for <DirectoryMatch> and <FilesMatch>, for the
  same reason.
  
  Reviewed by: Ben Laurie
  
  Revision  Changes    Path
  1.119     +25 -6     apachen/src/main/http_core.c
  
  Index: http_core.c
  ===================================================================
  RCS file: /export/home/cvs/apachen/src/main/http_core.c,v
  retrieving revision 1.118
  retrieving revision 1.119
  diff -u -u -r1.118 -r1.119
  --- http_core.c	1997/09/02 16:12:08	1.118
  +++ http_core.c	1997/09/09 18:39:17	1.119
  @@ -753,6 +753,16 @@
       return NULL;
   }
   
  +/* We use this in <DirectoryMatch> and <FilesMatch>, to ensure that 
  + * people don't get bitten by wrong-cased regex matches
  + */
  +
  +#ifdef WIN32
  +#define USE_ICASE REG_ICASE
  +#else
  +#define USE_ICASE 0
  +#endif
  +
   static const char end_dir_magic[] = "</Directory> outside of any <Directory>
section";
   
   const char *end_dirsection (cmd_parms *cmd, void *dummy) {
  @@ -782,11 +792,15 @@
       cmd->override = OR_ALL|ACCESS_CONF;
   
       if (cmd->info) { /* <DirectoryMatch> */
  -	r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED);
  +	r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE);
       }
       else if (!strcmp(cmd->path, "~")) {
   	cmd->path = getword_conf (cmd->pool, &arg);
  -	r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED);
  +	r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE);
  +    }
  +    else {
  +	/* Ensure that the pathname is canonical */
  +	cmd->path = os_canonical_filename(cmd->pool, cmd->path);
       }
   
       errmsg = srm_command_loop (cmd, new_dir_conf);
  @@ -881,16 +895,21 @@
       if (cmd->info) { /* <FilesMatch> */
   	if (old_path && cmd->path[0] != '/' && cmd->path[0] != '^')
               cmd->path = pstrcat(cmd->pool, "^", old_path, cmd->path, NULL);
  -        r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED);
  +        r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE);
       }
       else if (!strcmp(cmd->path, "~")) {
   	cmd->path = getword_conf (cmd->pool, &arg);
   	if (old_path && cmd->path[0] != '/' && cmd->path[0] != '^')
   	    cmd->path = pstrcat(cmd->pool, "^", old_path, cmd->path, NULL);
  -	r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED);
  +	r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE);
  +    }
  +    else {
  +	if (old_path && cmd->path[0] != '/')
  +	    cmd->path = pstrcat(cmd->pool, old_path, cmd->path, NULL);
  +
  +	/* Ensure that the pathname is canonical */
  +	cmd->path = os_canonical_filename(cmd->pool, cmd->path);
       }
  -    else if (old_path && cmd->path[0] != '/')
  -	cmd->path = pstrcat(cmd->pool, old_path, cmd->path, NULL);
   
       errmsg = srm_command_loop (cmd, new_file_conf);
       if (errmsg != end_file_magic) return errmsg;
  
  
  

Mime
View raw message