In Tomcat 3.2b7 (and earlier), invoking
http://localhost:8080/test/jsp/Helloworld.jsp results in an NPE in
JspCompiler.isOutDated().  This occurs because getRealPath() returns
null since the 'w' should be uppercase, hence it is considered an
"unsafe" path.  To make this error return "file not found", I propose
the following patches for 3.2b7.

===== JspCompiler.java Patch =====
RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/JspCompiler.java,v
retrieving revision 1.14.2.1
diff -u -r1.14.2.1 JspCompiler.java
--- JspCompiler.java    2000/07/25 20:45:09     1.14.2.1
+++ JspCompiler.java    2000/11/15 12:13:12
@@ -304,7 +304,11 @@
     public boolean isOutDated() {
         File jspReal = null;
 
-        jspReal = new File(ctxt.getRealPath(jsp.getPath()));
+        String realPath = ctxt.getRealPath(jsp.getPath());
+        if (realPath == null)
+            return true;
+
+        jspReal = new File(realPath);
 
         File classFile = new File(getClassFileName());
         if (classFile.exists()) {
==================================

===== JspReader.java patch =====
RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/JspReader.java,v
retrieving revision 1.16.2.4
diff -u -r1.16.2.4 JspReader.java
--- JspReader.java      2000/11/06 04:08:14     1.16.2.4
+++ JspReader.java      2000/11/15 12:12:29
@@ -171,6 +171,9 @@
            ? file.getAbsolutePath()
            : context.getRealPath(file.toString());
 
+       if (longName == null)
+           throw new FileNotFoundException(file.toString());
+
        int fileid = registerSourceFile(longName);
        
         if (fileid == -1)
================================

This probably won't eliminate the head scratching, but at least they will
be scratching their heads for the right reason. :-)  Also, this will make
section 6.7 in the Readme correct about the error seen due to a case mismatch.

If no one objects, I'll commit these changes this afternoon.

Cheers,
Larry

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

Reply via email to