fielding    99/01/08 12:08:28

  Modified:    src      CHANGES
               src/include ap_mmn.h httpd.h
               src/main http_request.c util.c
               src/os/bs2000 os.h
               src/os/os2 os.h
               src/os/tpf os.h
               src/os/unix os.h
               src/os/win32 os.h
  Log:
  Moved prototypes/defines for ap_os_canonical_filename(),
  ap_os_case_canonical_filename(), ap_os_systemcase_filename(), and
  ap_os_is_filename_valid() from httpd.h to the separate os.h files.
  Moved BS2000-specific os_set_account() and os_init_job_environment()
  prototypes to bs2000/os.h.  HAVE_CANONICAL_FILENAME no londer needed.
  
  Revision  Changes    Path
  1.1208    +6 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1207
  retrieving revision 1.1208
  diff -u -r1.1207 -r1.1208
  --- CHANGES   1999/01/08 17:54:37     1.1207
  +++ CHANGES   1999/01/08 20:08:18     1.1208
  @@ -1,5 +1,11 @@
   Changes with Apache 1.3.4
   
  +  *) Moved prototypes/defines for ap_os_canonical_filename(),
  +     ap_os_case_canonical_filename(), ap_os_systemcase_filename(), and
  +     ap_os_is_filename_valid() from httpd.h to the separate os.h files.
  +     Moved BS2000-specific os_set_account() and os_init_job_environment()
  +     prototypes to bs2000/os.h. [Roy Fielding]
  +
     *) Renamed macros status_drops_connection to ap_status_drops_connection
        and vestigial scan_script_header to ap_scan_script_header_err,
        mostly for aesthetic reasons. [Roy Fielding]
  
  
  
  1.21      +1 -1      apache-1.3/src/include/ap_mmn.h
  
  Index: ap_mmn.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/include/ap_mmn.h,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ap_mmn.h  1999/01/06 19:14:51     1.20
  +++ ap_mmn.h  1999/01/08 20:08:21     1.21
  @@ -195,7 +195,7 @@
    * 19990101             - renamed macro escape_uri() to ap_escape_uri()
    *                      - added MODULE_MAGIC_COOKIE to identify module 
structs
    * 19990103 (1.3.4-dev) - added ap_array_pstrcat()
  - * 19990105 (1.3.4-dev) - added ap_os_is_filename_valid() to Win32
  + * 19990105 (1.3.4-dev) - added ap_os_is_filename_valid()
    * 19990106 (1.3.4-dev) - Move MODULE_MAGIC_COOKIE to the end of the
    *                        STANDARD_MODULE_STUFF macro so the version
    *                        numbers and file name remain at invariant offsets
  
  
  
  1.260     +0 -21     apache-1.3/src/include/httpd.h
  
  Index: httpd.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/include/httpd.h,v
  retrieving revision 1.259
  retrieving revision 1.260
  diff -u -r1.259 -r1.260
  --- httpd.h   1999/01/08 17:54:39     1.259
  +++ httpd.h   1999/01/08 20:08:21     1.260
  @@ -1017,27 +1017,6 @@
   API_EXPORT(int) ap_can_exec(const struct stat *);
   API_EXPORT(void) ap_chdir_file(const char *file);
   
  -#ifndef HAVE_CANONICAL_FILENAME
  -#define ap_os_canonical_filename(p,f)  (f)
  -#define ap_os_case_canonical_filename(p,f)  (f)
  -#define ap_os_systemcase_filename(p,f)  (f)
  -#else
  -API_EXPORT(char *) ap_os_canonical_filename(pool *p, const char *file);
  -#ifdef WIN32
  -API_EXPORT(char *) ap_os_case_canonical_filename(pool *pPool, const char 
*szFile);
  -API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool, const char 
*szFile);
  -API_EXPORT(int) ap_os_is_filename_valid(const char *file);
  -#else
  -#define ap_os_case_canonical_filename(p,f) ap_os_canonical_filename(p,f)
  -#define ap_os_systemcase_filename(p,f) ap_os_canonical_filename(p,f)
  -#endif
  -#endif
  -
  -#ifdef _OSD_POSIX
  -extern const char *os_set_account(pool *p, const char *account);
  -extern int os_init_job_environment(server_rec *s, const char *user_name, int 
one_process);
  -#endif /* _OSD_POSIX */
  -
   char *ap_get_local_host(pool *);
   unsigned long ap_get_virthost_addr(char *hostname, unsigned short *port);
   
  
  
  
  1.143     +5 -11     apache-1.3/src/main/http_request.c
  
  Index: http_request.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/main/http_request.c,v
  retrieving revision 1.142
  retrieving revision 1.143
  diff -u -r1.142 -r1.143
  --- http_request.c    1999/01/08 17:54:42     1.142
  +++ http_request.c    1999/01/08 20:08:23     1.143
  @@ -229,11 +229,11 @@
   
           *cp = '\0';
   
  -#ifdef WIN32
  -        /* We must not stat() filenames such as "/file/aux" since it can 
cause
  -         * delays or lockups. So pretend that they do not exist by returning
  -         * an ENOENT error. This will force us to drop that part of the path 
and
  -         * keep looking back for a "real" file that exists, while still 
allowing
  +        /* We must not stat() filenames that may cause os-specific system
  +         * problems, such as "/file/aux" on DOS-abused filesystems.
  +         * So pretend that they do not exist by returning an ENOENT error.
  +         * This will force us to drop that part of the path and keep
  +         * looking back for a "real" file that exists, while still allowing
            * the "invalid" path parts within the PATH_INFO.
            */
           if (!ap_os_is_filename_valid(path)) {
  @@ -244,10 +244,6 @@
               errno = 0;
               rv = stat(path, &r->finfo);
           }
  -#else
  -        errno = 0;
  -        rv = stat(path, &r->finfo);
  -#endif
   
           if (cp != end)
               *cp = '/';
  @@ -407,13 +403,11 @@
       ap_no2slash(test_filename);
       num_dirs = ap_count_dirs(test_filename);
   
  -#ifdef WIN32
       if (!ap_os_is_filename_valid(r->filename)) {
           ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
                         "Filename is not valid: %s", r->filename);
           return HTTP_FORBIDDEN;
       }
  -#endif
   
       if ((res = check_safe_file(r))) {
           return res;
  
  
  
  1.145     +0 -2      apache-1.3/src/main/util.c
  
  Index: util.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/main/util.c,v
  retrieving revision 1.144
  retrieving revision 1.145
  diff -u -r1.144 -r1.145
  --- util.c    1999/01/05 08:17:30     1.144
  +++ util.c    1999/01/08 20:08:23     1.145
  @@ -761,7 +761,6 @@
           return NULL;
       }
   
  -#if defined(WIN32)
       if (!ap_os_is_filename_valid(name)) {
           ap_log_error(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, NULL,
                       "Access to config file %s denied: not a valid filename",
  @@ -769,7 +768,6 @@
        errno = EACCES;
           return NULL;
       }
  -#endif
   
       file = ap_pfopen(p, name, "r");
   #ifdef DEBUG
  
  
  
  1.14      +15 -0     apache-1.3/src/os/bs2000/os.h
  
  Index: os.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/bs2000/os.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- os.h      1998/12/15 08:55:14     1.13
  +++ os.h      1999/01/08 20:08:25     1.14
  @@ -29,6 +29,21 @@
   extern int ap_os_is_path_absolute(const char *file);
   #endif
   
  +/* Other ap_os_ routines not used by this platform */
  +
  +#define ap_os_canonical_filename(p,f)       (f)
  +#define ap_os_case_canonical_filename(p,f)  (f)
  +#define ap_os_systemcase_filename(p,f)      (f)
  +#define ap_os_is_filename_valid(f)          (1)
  +
  +/* Routines in bs2login.c */
  +
  +#ifdef _OSD_POSIX
  +extern const char *os_set_account(pool *p, const char *account);
  +extern int os_init_job_environment(server_rec *s, const char *user_name,
  +                                   int one_process);
  +#endif
  +
   /* Sorry if this is ugly, but the include order doesn't allow me
    * to use request_rec here... */
   struct request_rec;
  
  
  
  1.10      +10 -1     apache-1.3/src/os/os2/os.h
  
  Index: os.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/os2/os.h,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- os.h      1998/12/15 08:55:15     1.9
  +++ os.h      1999/01/08 20:08:25     1.10
  @@ -2,7 +2,6 @@
   #define APACHE_OS_H
   
   #define PLATFORM "OS/2"
  -#define HAVE_CANONICAL_FILENAME
   
   /*
    * This file in included in all Apache source code. It contains definitions
  @@ -27,6 +26,16 @@
    */
   extern int ap_os_is_path_absolute(const char *file);
   #endif
  +
  +/* Canonical Filename Routines */
  +
  +API_EXPORT(char *) ap_os_canonical_filename(pool *p, const char *file);
  +
  +#define ap_os_case_canonical_filename(p,f) ap_os_canonical_filename(p,f)
  +#define ap_os_systemcase_filename(p,f)     ap_os_canonical_filename(p,f)
  +
  +/* FIXME: the following should be implemented on this platform */
  +#define ap_os_is_filename_valid(f)         (1)
   
   /* OS/2 doesn't have symlinks so S_ISLNK is always false */
   #define S_ISLNK(m) 0
  
  
  
  1.4       +7 -0      apache-1.3/src/os/tpf/os.h
  
  Index: os.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/tpf/os.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- os.h      1999/01/06 21:57:05     1.3
  +++ os.h      1999/01/08 20:08:26     1.4
  @@ -33,6 +33,13 @@
   extern int ap_os_is_path_absolute(const char *file);
   #endif
   
  +/* Other ap_os_ routines not used by this platform */
  +
  +#define ap_os_canonical_filename(p,f)       (f)
  +#define ap_os_case_canonical_filename(p,f)  (f)
  +#define ap_os_systemcase_filename(p,f)      (f)
  +#define ap_os_is_filename_valid(f)          (1)
  +
   /* Sorry if this is ugly, but the include order doesn't allow me
    * to use request_rec here... */
   struct request_rec;
  
  
  
  1.37      +7 -0      apache-1.3/src/os/unix/os.h
  
  Index: os.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/unix/os.h,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- os.h      1999/01/02 14:12:20     1.36
  +++ os.h      1999/01/08 20:08:27     1.37
  @@ -86,6 +86,13 @@
   extern int ap_os_is_path_absolute(const char *file);
   #endif
   
  +/* Other ap_os_ routines not used by this platform */
  +
  +#define ap_os_canonical_filename(p,f)       (f)
  +#define ap_os_case_canonical_filename(p,f)  (f)
  +#define ap_os_systemcase_filename(p,f)      (f)
  +#define ap_os_is_filename_valid(f)          (1)
  +
   /*
    *  Abstraction layer for loading
    *  Apache modules under run-time via 
  
  
  
  1.26      +8 -1      apache-1.3/src/os/win32/os.h
  
  Index: os.h
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/os/win32/os.h,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- os.h      1998/11/05 19:20:17     1.25
  +++ os.h      1999/01/08 20:08:27     1.26
  @@ -33,7 +33,6 @@
   #define HAVE_MMAP
   #define USE_MMAP_SCOREBOARD
   #define MULTITHREAD
  -#define HAVE_CANONICAL_FILENAME
   typedef int uid_t;
   typedef int gid_t;
   typedef int pid_t;
  @@ -104,6 +103,14 @@
   #define _spawnle                         os_spawnle
   #define spawnle                                  os_spawnle
   API_EXPORT(int) os_spawnle(int mode,const char *cmdname,...);
  +
  +/* Canonical Filename Routines in util_win32.c */
  +
  +API_EXPORT(char *) ap_os_canonical_filename(pool *p, const char *file);
  +API_EXPORT(char *) ap_os_case_canonical_filename(pool *pPool,
  +                                                 const char *szFile);
  +API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool, const char 
*szFile);
  +API_EXPORT(int) ap_os_is_filename_valid(const char *file);
   
   /* Abstractions for dealing with shared object files (DLLs on Win32).
    * These are used by mod_so.c
  
  
  

Reply via email to