remm        2002/09/18 06:54:33

  Modified:    catalina/src/share/org/apache/naming/resources
                        FileDirContext.java
  Log:
  - Case sensitivity check will always be made, based on the value of the flag,
    regardless of this OS.
  - Add a flag to allow sym linking.
  - I'll wait to port the patch to 5.0 based on the feedback.
  
  Revision  Changes    Path
  1.14      +31 -7     
jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java
  
  Index: FileDirContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FileDirContext.java       17 Mar 2002 00:03:13 -0000      1.13
  +++ FileDirContext.java       18 Sep 2002 13:54:33 -0000      1.14
  @@ -154,6 +154,12 @@
       protected boolean caseSensitive = true;
   
   
  +    /**
  +     * Allow linking.
  +     */
  +    protected boolean allowLinking = false;
  +
  +
       // ------------------------------------------------------------- Properties
   
   
  @@ -208,6 +214,22 @@
       }
   
   
  +    /**
  +     * Set allow linking.
  +     */
  +    public void setAllowLinking(boolean allowLinking) {
  +        this.allowLinking = allowLinking;
  +    }
  +
  +
  +    /**
  +     * Is linking allowed.
  +     */
  +    public boolean getAllowLinking() {
  +        return allowLinking;
  +    }
  +
  +
       // --------------------------------------------------------- Public Methods
   
   
  @@ -217,6 +239,7 @@
       public void release() {
   
           caseSensitive = true;
  +        allowLinking = false;
           absoluteBase = null;
           base = null;
           super.release();
  @@ -866,12 +889,13 @@
               if (canPath == null)
                   return null;
   
  -            if (!canPath.startsWith(absoluteBase)) {
  +            // Check to see if going outside of the web application root
  +            if ((!allowLinking) && (!canPath.startsWith(absoluteBase))) {
                   return null;
               }
   
  -            // Windows only check
  -            if ((caseSensitive) && (File.separatorChar  == '\\')) {
  +            // Case sensitivity check
  +            if (caseSensitive) {
                   String fileAbsPath = file.getAbsolutePath();
                   if (fileAbsPath.endsWith("."))
                       fileAbsPath = fileAbsPath + "/";
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to