httpd-docs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wr...@locus.apache.org
Subject cvs commit: apache-2.0/src/lib/apr/include apr_file_io.h
Date Fri, 10 Nov 2000 15:19:54 GMT
wrowe       00/11/10 07:19:53

  Modified:    src/lib/apr/file_io/unix filestat.c
               src/lib/apr/include apr_file_io.h
  Log:
    Teaching new dogs old tricks... apr_stat must behave and never change
    its finfo* argument if it fails... apr_stat/Unix must check the ENOENT
    and ENOTDIR errno defines [Please- check my work carefully!]  and we
    start unwinding the ap_os_is_filename_valid() funtion (which is gone
    for good, win32 apr_stat() will learn these tricks.)
  
  Revision  Changes    Path
  1.32      +30 -0     apache-2.0/src/lib/apr/file_io/unix/filestat.c
  
  Index: filestat.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/unix/filestat.c,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- filestat.c	2000/11/09 06:15:53	1.31
  +++ filestat.c	2000/11/10 15:19:53	1.32
  @@ -129,7 +129,37 @@
           return APR_SUCCESS;
       }
       else {
  +#if !defined(ENOENT) || !defined(ENOTDIR)
  +#error ENOENT || ENOTDIR not defined; please see the
  +#error comments at this line in the source for a workaround.
  +        /*
  +         * If ENOENT || ENOTDIR is not defined in one of the your OS's
  +         * include files, APR cannot report a good reason why the stat()
  +         * of the file failed; there are cases where it can fail even though
  +         * the file exists.  This opens holes in Apache, for example, because
  +         * it becomes possible for someone to get a directory listing of a 
  +         * directory even though there is an index (eg. index.html) file in 
  +         * it.  If you do not have a problem with this, delete the above 
  +         * #error lines and start the compile again.  If you need to do this,
  +         * please submit a bug report to http://www.apache.org/bug_report.html
  +         * letting us know that you needed to do this.  Please be sure to 
  +         * include the operating system you are using.
  +         */
  +        /* WARNING: All errors will be handled as not found
  +         */
  +#if !defined(ENOENT) 
  +        return APR_ENOENT;
  +#else
  +        /* WARNING: All errors but not found will be handled as not directory
  +         */
  +        if (errno != ENOENT)
  +            return APR_ENOENT;
  +        else
  +            return errno;
  +#endif
  +#else /* All was defined well, report the usual: */
           return errno;
  +#endif
       }
   }
   
  
  
  
  1.73      +4 -2      apache-2.0/src/lib/apr/include/apr_file_io.h
  
  Index: apr_file_io.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr_file_io.h,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- apr_file_io.h	2000/11/08 22:26:19	1.72
  +++ apr_file_io.h	2000/11/10 15:19:53	1.73
  @@ -509,7 +509,8 @@
   /**
    * get the specified file's stats.  The file is specified by filename, 
    * instead of using a pre-opened file.
  - * @param finfo Where to store the information about the file.
  + * @param finfo Where to store the information about the file, which is
  + * never touched if the call fails.
    * @param fname The name of the file to stat.
    * @param cont the pool to use to allocate the new file. 
    */ 
  @@ -519,7 +520,8 @@
    * get the specified file's stats.  The file is specified by filename, 
    * instead of using a pre-opened file.  If the file is a symlink, this function
    * will get the stats for the symlink not the file the symlink refers to.
  - * @param finfo Where to store the information about the file.
  + * @param finfo Where to store the information about the file, which is
  + * never touched if the call fails.
    * @param fname The name of the file to stat.
    * @param cont the pool to use to allocate the new file. 
    */ 
  
  
  

Mime
View raw message