cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
markt 2005/06/27 14:54:55 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: DefaultServlet was showing symbolic links in directory listings with - no last modified date for files or dirs - no size for files - files were displayed as directories. Revision ChangesPath 1.18 +5 -1 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.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- FileDirContext.java 4 Feb 2005 22:08:03 - 1.17 +++ FileDirContext.java 27 Jun 2005 21:54:55 - 1.18 @@ -212,6 +212,8 @@ if (file.isDirectory()) { FileDirContext tempContext = new FileDirContext(env); tempContext.setDocBase(file.getPath()); +tempContext.setAllowLinking(getAllowLinking()); +tempContext.setCaseSensitive(isCaseSensitive()); result = tempContext; } else { result = new FileResource(file); @@ -892,6 +894,8 @@ if (currentFile.isDirectory()) { FileDirContext tempContext = new FileDirContext(env); tempContext.setDocBase(file.getPath()); +tempContext.setAllowLinking(getAllowLinking()); +tempContext.setCaseSensitive(isCaseSensitive()); object = tempContext; } else { object = new FileResource(currentFile); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm2002/11/06 01:57:18 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: - Don't do the case sensitivity check if allow linking is used (this is a Unix specific option). Revision ChangesPath 1.15 +5 -5 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.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- FileDirContext.java 18 Sep 2002 13:54:33 - 1.14 +++ FileDirContext.java 6 Nov 2002 09:57:17 - 1.15 -895,7 +895,7 } // Case sensitivity check -if (caseSensitive) { +if (!allowLinking caseSensitive) { String fileAbsPath = file.getAbsolutePath(); if (fileAbsPath.endsWith(.)) fileAbsPath = fileAbsPath + /; -- To unsubscribe, e-mail: mailto:tomcat-dev-unsubscribe;jakarta.apache.org For additional commands, e-mail: mailto:tomcat-dev-help;jakarta.apache.org
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm2002/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 ChangesPath 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 - 1.13 +++ FileDirContext.java 18 Sep 2002 13:54:33 - 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]
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm02/03/16 16:03:13 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: - Fix an off-by-one bug in the canonicalization code. Somehow it was failing only on JDK 1.3, but not on 1.4.0, and somehow 4.0.x works fine (so I don't plan to fix it). Revision ChangesPath 1.13 +8 -16 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.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- FileDirContext.java 14 Mar 2002 20:55:47 - 1.12 +++ FileDirContext.java 17 Mar 2002 00:03:13 - 1.13 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.12 2002/03/14 20:55:47 remm Exp $ - * $Revision: 1.12 $ - * $Date: 2002/03/14 20:55:47 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.13 2002/03/17 00:03:13 remm Exp $ + * $Revision: 1.13 $ + * $Date: 2002/03/17 00:03:13 $ * * * @@ -99,7 +99,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.12 $ $Date: 2002/03/14 20:55:47 $ + * @version $Revision: 1.13 $ $Date: 2002/03/17 00:03:13 $ */ public class FileDirContext extends BaseDirContext { @@ -854,15 +854,6 @@ */ protected File file(String name) { -/* -name = normalize(name); -if (name == null) -return (null); - - if (File.separatorChar == '\\') -name = name.replace('/', File.separatorChar); -*/ - File file = new File(base, name); if (file.exists() file.canRead()) { @@ -875,8 +866,9 @@ if (canPath == null) return null; -if (!canPath.startsWith(absoluteBase)) +if (!canPath.startsWith(absoluteBase)) { return null; +} // Windows only check if ((caseSensitive) (File.separatorChar == '\\')) { @@ -888,12 +880,12 @@ canPath = normalize(canPath); if ((absoluteBase.length() absPath.length()) (absoluteBase.length() canPath.length())) { -absPath = absPath.substring(absoluteBase.length()); +absPath = absPath.substring(absoluteBase.length() + 1); if ((canPath == null) || (absPath == null)) return null; if (absPath.equals()) absPath = /; -canPath = canPath.substring(absoluteBase.length()); +canPath = canPath.substring(absoluteBase.length() + 1); if (canPath.equals()) canPath = /; if (!canPath.equals(absPath)) -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm02/03/14 12:55:47 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: - Tighten up the file access so that there is no way to request a path above the base, regarless of what path is passed. This is for robustness and peace of mind only; I haven't sound any security vulnerabiltiy. Note: The performance impact is minimal because of the cache. Revision ChangesPath 1.12 +23 -12 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.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- FileDirContext.java 27 Feb 2002 19:06:35 - 1.11 +++ FileDirContext.java 14 Mar 2002 20:55:47 - 1.12 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.11 2002/02/27 19:06:35 remm Exp $ - * $Revision: 1.11 $ - * $Date: 2002/02/27 19:06:35 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.12 2002/03/14 20:55:47 remm Exp $ + * $Revision: 1.12 $ + * $Date: 2002/03/14 20:55:47 $ * * * @@ -99,7 +99,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.11 $ $Date: 2002/02/27 19:06:35 $ + * @version $Revision: 1.12 $ $Date: 2002/03/14 20:55:47 $ */ public class FileDirContext extends BaseDirContext { @@ -186,7 +186,7 @@ if (!base.exists() || !base.isDirectory() || !base.canRead()) throw new IllegalArgumentException (sm.getString(fileResources.base, docBase)); -this.absoluteBase = normalize(base.getAbsolutePath()); +this.absoluteBase = base.getAbsolutePath(); super.setDocBase(docBase); } @@ -854,28 +854,38 @@ */ protected File file(String name) { +/* name = normalize(name); if (name == null) return (null); if (File.separatorChar == '\\') name = name.replace('/', File.separatorChar); +*/ File file = new File(base, name); if (file.exists() file.canRead()) { + +// Check that this file belongs to our root path +String canPath = null; +try { +canPath = file.getCanonicalPath(); +} catch (IOException e) { +} +if (canPath == null) +return null; + +if (!canPath.startsWith(absoluteBase)) +return null; + // Windows only check if ((caseSensitive) (File.separatorChar == '\\')) { String fileAbsPath = file.getAbsolutePath(); if (fileAbsPath.endsWith(.)) fileAbsPath = fileAbsPath + /; String absPath = normalize(fileAbsPath); -String canPath = null; -try { -canPath = file.getCanonicalPath(); -if (canPath != null) -canPath = normalize(canPath); -} catch (IOException e) { -} +if (canPath != null) +canPath = normalize(canPath); if ((absoluteBase.length() absPath.length()) (absoluteBase.length() canPath.length())) { absPath = absPath.substring(absoluteBase.length()); @@ -890,6 +900,7 @@ return null; } } + } else { return null; } -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm02/02/27 11:06:35 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: - Add protection against going above the base path. Revision ChangesPath 1.11 +11 -6 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.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- FileDirContext.java 27 Feb 2002 01:17:00 - 1.10 +++ FileDirContext.java 27 Feb 2002 19:06:35 - 1.11 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.10 2002/02/27 01:17:00 craigmcc Exp $ - * $Revision: 1.10 $ - * $Date: 2002/02/27 01:17:00 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.11 2002/02/27 19:06:35 remm Exp $ + * $Revision: 1.11 $ + * $Date: 2002/02/27 19:06:35 $ * * * @@ -99,7 +99,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.10 $ $Date: 2002/02/27 01:17:00 $ + * @version $Revision: 1.11 $ $Date: 2002/02/27 19:06:35 $ */ public class FileDirContext extends BaseDirContext { @@ -853,8 +853,13 @@ * @param name Normalized context-relative path (with leading '/') */ protected File file(String name) { - if( File.separatorChar == '\\' ) -name = name.replace('/',File.separatorChar); + +name = normalize(name); +if (name == null) +return (null); + + if (File.separatorChar == '\\') +name = name.replace('/', File.separatorChar); File file = new File(base, name); if (file.exists() file.canRead()) { -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm01/11/02 18:13:27 Modified:catalina/src/share/org/apache/naming/resources Tag: tomcat_40_branch FileDirContext.java Log: - Port from HEAD: - Fix security manager bug when using Windows. The base should be an absolute path (instead of a relative path), otherwise a security exception would be thrown by the case sensitivity checking code when trying to access the user.dir system property. Revision ChangesPath No revision No revision 1.7.2.2 +10 -6 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.7.2.1 retrieving revision 1.7.2.2 diff -u -r1.7.2.1 -r1.7.2.2 --- FileDirContext.java 2001/10/04 19:29:12 1.7.2.1 +++ FileDirContext.java 2001/11/03 02:13:27 1.7.2.2 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.7.2.1 2001/10/04 19:29:12 remm Exp $ - * $Revision: 1.7.2.1 $ - * $Date: 2001/10/04 19:29:12 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.7.2.2 2001/11/03 02:13:27 remm Exp $ + * $Revision: 1.7.2.2 $ + * $Date: 2001/11/03 02:13:27 $ * * * @@ -99,7 +99,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.7.2.1 $ $Date: 2001/10/04 19:29:12 $ + * @version $Revision: 1.7.2.2 $ $Date: 2001/11/03 02:13:27 $ */ public class FileDirContext extends BaseDirContext { @@ -175,13 +175,17 @@ (sm.getString(resources.null)); // Calculate a File object referencing this document base directory - File base = new File(docBase); +base = new File(docBase); +try { +base = base.getCanonicalFile(); +} catch (IOException e) { +// Ignore +} // Validate that the document base is an existing directory if (!base.exists() || !base.isDirectory() || !base.canRead()) throw new IllegalArgumentException (sm.getString(fileResources.base, docBase)); - this.base = base; this.absoluteBase = normalize(base.getAbsolutePath()); super.setDocBase(docBase); -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm01/10/31 10:58:36 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: - Fix security manager bug when using Windows. The base should be an absolute path (instead of a relative path), otherwise a security exception would be thrown by the case sensitivity checking code when trying to access the user.dir system property. Revision ChangesPath 1.9 +10 -6 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.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- FileDirContext.java 2001/09/28 02:22:27 1.8 +++ FileDirContext.java 2001/10/31 18:58:36 1.9 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.8 2001/09/28 02:22:27 remm Exp $ - * $Revision: 1.8 $ - * $Date: 2001/09/28 02:22:27 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.9 2001/10/31 18:58:36 remm Exp $ + * $Revision: 1.9 $ + * $Date: 2001/10/31 18:58:36 $ * * * @@ -99,7 +99,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.8 $ $Date: 2001/09/28 02:22:27 $ + * @version $Revision: 1.9 $ $Date: 2001/10/31 18:58:36 $ */ public class FileDirContext extends BaseDirContext { @@ -175,13 +175,17 @@ (sm.getString(resources.null)); // Calculate a File object referencing this document base directory - File base = new File(docBase); + base = new File(docBase); +try { +base = base.getCanonicalFile(); +} catch (IOException e) { +// Ignore +} // Validate that the document base is an existing directory if (!base.exists() || !base.isDirectory() || !base.canRead()) throw new IllegalArgumentException (sm.getString(fileResources.base, docBase)); - this.base = base; this.absoluteBase = normalize(base.getAbsolutePath()); super.setDocBase(docBase); -- To unsubscribe, e-mail: mailto:[EMAIL PROTECTED] For additional commands, e-mail: mailto:[EMAIL PROTECTED]
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
craigmcc01/08/15 17:57:18 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: Sort the directory listing returned when there is no welcome page (and directory listings are not suppressed) for webapps that are unpacked into a real directory. Still have to look at how to do this for webapps that are executed directly from a WAR. Revision ChangesPath 1.7 +6 -4 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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- FileDirContext.java 2001/07/23 06:40:46 1.6 +++ FileDirContext.java 2001/08/16 00:57:18 1.7 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.6 2001/07/23 06:40:46 remm Exp $ - * $Revision: 1.6 $ - * $Date: 2001/07/23 06:40:46 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.7 2001/08/16 00:57:18 craigmcc Exp $ + * $Revision: 1.7 $ + * $Date: 2001/08/16 00:57:18 $ * * * @@ -64,6 +64,7 @@ package org.apache.naming.resources; +import java.util.Arrays; import java.util.Hashtable; import java.util.Vector; import java.util.Date; @@ -98,7 +99,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.6 $ $Date: 2001/07/23 06:40:46 $ + * @version $Revision: 1.7 $ $Date: 2001/08/16 00:57:18 $ */ public class FileDirContext extends BaseDirContext { @@ -896,6 +897,7 @@ if (!file.isDirectory()) return entries; String[] names = file.list(); +Arrays.sort(names); // Sort alphabetically if (names == null) return entries; NamingEntry entry = null;
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
glenn 01/06/22 13:20:54 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: Fix path for windows file separator Revision ChangesPath 1.4 +6 -5 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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- FileDirContext.java 2001/03/31 03:00:41 1.3 +++ FileDirContext.java 2001/06/22 20:20:54 1.4 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.3 2001/03/31 03:00:41 remm Exp $ - * $Revision: 1.3 $ - * $Date: 2001/03/31 03:00:41 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.4 2001/06/22 20:20:54 glenn Exp $ + * $Revision: 1.4 $ + * $Date: 2001/06/22 20:20:54 $ * * * @@ -98,7 +98,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.3 $ $Date: 2001/03/31 03:00:41 $ + * @version $Revision: 1.4 $ $Date: 2001/06/22 20:20:54 $ */ public class FileDirContext extends BaseDirContext { @@ -218,7 +218,6 @@ */ public Object lookup(String name) throws NamingException { - Object result = null; File file = file(name); @@ -843,6 +842,8 @@ * @param name Normalized context-relative path (with leading '/') */ protected File file(String name) { + if( File.separatorChar == '\\' ) +name = name.replace('/',File.separatorChar); File file = new File(base, name); if (file.exists() file.canRead()) {
Re: cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
Quoting [EMAIL PROTECTED]: glenn 01/06/22 13:20:54 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: Fix path for windows file separator @@ -843,6 +842,8 @@ * @param name Normalized context-relative path (with leading '/') */ protected File file(String name) { + if( File.separatorChar == '\\' ) +name = name.replace('/',File.separatorChar); File file = new File(base, name); if (file.exists() file.canRead()) { Is this really needed ? I think this should be abstracted by the new File call. Remy
Re: cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
Remy Maucherat wrote: Quoting [EMAIL PROTECTED]: glenn 01/06/22 13:20:54 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: Fix path for windows file separator @@ -843,6 +842,8 @@ * @param name Normalized context-relative path (with leading '/') */ protected File file(String name) { + if( File.separatorChar == '\\' ) +name = name.replace('/',File.separatorChar); File file = new File(base, name); if (file.exists() file.canRead()) { Is this really needed ? I think this should be abstracted by the new File call. Yes, it was needed. There were a few cases under windows when the file separator was incorrect, causing FileDirContext to fail. As long as we make sure the file separator is correct, you can abstract it out any way you think works best. Regards, Glenn -- Glenn Nielsen [EMAIL PROTECTED] | /* Spelin donut madder| MOREnet System Programming | * if iz ina coment. | Missouri Research and Education Network | */ | --
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources FileDirContext.java
remm01/03/30 19:00:42 Modified:catalina/src/share/org/apache/naming/resources FileDirContext.java Log: - Fix problems under Windows where doing a request on /examples/.. would return a 500. Should now return a 404 instead. Revision ChangesPath 1.3 +21 -15 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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- FileDirContext.java 2001/02/05 04:41:08 1.2 +++ FileDirContext.java 2001/03/31 03:00:41 1.3 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.2 2001/02/05 04:41:08 remm Exp $ - * $Revision: 1.2 $ - * $Date: 2001/02/05 04:41:08 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/FileDirContext.java,v 1.3 2001/03/31 03:00:41 remm Exp $ + * $Revision: 1.3 $ + * $Date: 2001/03/31 03:00:41 $ * * * @@ -98,7 +98,7 @@ * Filesystem Directory Context implementation helper class. * * @author Remy Maucherat - * @version $Revision: 1.2 $ $Date: 2001/02/05 04:41:08 $ + * @version $Revision: 1.3 $ $Date: 2001/03/31 03:00:41 $ */ public class FileDirContext extends BaseDirContext { @@ -848,7 +848,10 @@ if (file.exists() file.canRead()) { // Windows only check if ((caseSensitive) (File.separatorChar == '\\')) { -String absPath = normalize(file.getAbsolutePath()); +String fileAbsPath = file.getAbsolutePath(); +if (fileAbsPath.endsWith(".")) +fileAbsPath = fileAbsPath + "/"; +String absPath = normalize(fileAbsPath); String canPath = null; try { canPath = file.getCanonicalPath(); @@ -856,16 +859,19 @@ canPath = normalize(canPath); } catch (IOException e) { } -absPath = absPath.substring(absoluteBase.length()); -if ((canPath == null) || (absPath == null)) -return null; -if (absPath.equals("")) -absPath = "/"; -canPath = canPath.substring(absoluteBase.length()); -if (canPath.equals("")) -canPath = "/"; -if (!canPath.equals(absPath)) -return null; +if ((absoluteBase.length() absPath.length()) + (absoluteBase.length() canPath.length())) { +absPath = absPath.substring(absoluteBase.length()); +if ((canPath == null) || (absPath == null)) +return null; +if (absPath.equals("")) +absPath = "/"; +canPath = canPath.substring(absoluteBase.length()); +if (canPath.equals("")) +canPath = "/"; +if (!canPath.equals(absPath)) +return null; +} } } else { return null;