You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@locus.apache.org on 2000/11/13 05:53:51 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader StandardLoader.java

remm        00/11/12 20:53:51

  Modified:    catalina/src/share/org/apache/catalina/loader
                        StandardLoader.java
  Log:
  - Class repositories in the contexts were not loaded correctly if the
    catalina.home variable contained a relative path. Now, the path is
    normalized (/../ is removed, as well as /./).
  
  Revision  Changes    Path
  1.11      +18 -6     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java
  
  Index: StandardLoader.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- StandardLoader.java	2000/10/13 23:33:26	1.10
  +++ StandardLoader.java	2000/11/13 04:53:51	1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.10 2000/10/13 23:33:26 craigmcc Exp $
  - * $Revision: 1.10 $
  - * $Date: 2000/10/13 23:33:26 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.11 2000/11/13 04:53:51 remm Exp $
  + * $Revision: 1.11 $
  + * $Date: 2000/11/13 04:53:51 $
    *
    * ====================================================================
    *
  @@ -101,7 +101,7 @@
    * is not present, the system class loader will be used instead.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.10 $ $Date: 2000/10/13 23:33:26 $
  + * @version $Revision: 1.11 $ $Date: 2000/11/13 04:53:51 $
    */
   
   public final class StandardLoader
  @@ -801,12 +801,24 @@
           if (classesURL != null) {
               // Work around JDK 1.3 problem on Windows
               String classesURLString = classesURL.toString();
  +            if (classesURLString.indexOf('\\') >= 0)
  +                classesURLString = classesURLString.replace('\\', '/');
  +            // Resolve occurrences of "/./" in the normalized path
               while (true) {
  -                int index = classesURLString.indexOf("\\.\\");
  +                int index = classesURLString.indexOf("/./");
                   if (index < 0)
                       break;
                   classesURLString = classesURLString.substring(0, index) +
  -                    '\\' + classesURLString.substring(index + 3);
  +                    classesURLString.substring(index + 2);
  +            }
  +            // Resolve occurrences of "/../" in the normalized path
  +            while (true) {
  +                int index = classesURLString.indexOf("/../");
  +                if (index <= 0)
  +                    break;
  +                int index2 = classesURLString.lastIndexOf('/', index - 1);
  +                classesURLString = classesURLString.substring(0, index2) +
  +                    classesURLString.substring(index + 3);
               }
               addRepository(classesURLString + "/");
           }