luehe       2004/08/10 16:33:02

  Modified:    jasper2/src/share/org/apache/jasper/compiler Tag: TOMCAT_5_0
                        Mark.java JspReader.java JspDocumentParser.java
                        ErrorDispatcher.java
  Log:
  Ported fix for Bugzilla 30073 ("NPE when compiling .jspx with broken xml format in 
jspcmode")
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.7.2.2   +7 -2      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Mark.java
  
  Index: Mark.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Mark.java,v
  retrieving revision 1.7.2.1
  retrieving revision 1.7.2.2
  diff -u -r1.7.2.1 -r1.7.2.2
  --- Mark.java 10 Aug 2004 23:16:08 -0000      1.7.2.1
  +++ Mark.java 10 Aug 2004 23:33:01 -0000      1.7.2.2
  @@ -18,6 +18,7 @@
   import java.util.Stack;
   import java.net.URL;
   import java.net.MalformedURLException;
  +import org.apache.jasper.JspCompilationContext;
   
   /**
    * Mark represents a point in the JSP input. 
  @@ -53,6 +54,7 @@
       // reader that owns this mark (so we can look up fileid's)
       private JspReader reader;
   
  +    private JspCompilationContext ctxt;
   
       /**
        * Constructor
  @@ -68,6 +70,7 @@
            String inBaseDir, String inEncoding) {
   
           this.reader = reader;
  +        this.ctxt = reader.getJspCompilationContext();
           this.stream = inStream;
           this.cursor = 0;
           this.line = 1;
  @@ -86,6 +89,7 @@
       Mark(Mark other) {
   
           this.reader = other.reader;
  +        this.ctxt = other.reader.getJspCompilationContext();
           this.stream = other.stream;
           this.fileId = other.fileId;
           this.fileName = other.fileName;
  @@ -106,9 +110,10 @@
       /**
        * Constructor
        */    
  -    Mark(String filename, int line, int col) {
  +    Mark(JspCompilationContext ctxt, String filename, int line, int col) {
   
           this.reader = null;
  +        this.ctxt = ctxt;
           this.stream = null;
           this.cursor = 0;
           this.line = line;
  @@ -210,7 +215,7 @@
        * @exception MalformedURLException if the resource pathname is incorrect
        */
       public URL getURL() throws MalformedURLException {
  -        return reader.getResource(getFile());
  +        return ctxt.getResource(getFile());
       }
   
       public String toShortString() {
  
  
  
  1.20.2.1  +8 -0      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspReader.java
  
  Index: JspReader.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspReader.java,v
  retrieving revision 1.20
  retrieving revision 1.20.2.1
  diff -u -r1.20 -r1.20.2.1
  --- JspReader.java    12 May 2004 17:45:37 -0000      1.20
  +++ JspReader.java    10 Aug 2004 23:33:02 -0000      1.20.2.1
  @@ -99,6 +99,14 @@
        singleFile = false;
        pushFile(fname, encoding, reader);
       }
  +
  +    /*
  +     * @return JSP compilation context with which this JspReader is 
  +     * associated
  +     */
  +    JspCompilationContext getJspCompilationContext() {
  +        return context;
  +    }
       
       String getFile(int fileid) {
        return (String) sourceFiles.elementAt(fileid);
  
  
  
  1.80.2.1  +12 -10    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java
  
  Index: JspDocumentParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java,v
  retrieving revision 1.80
  retrieving revision 1.80.2.1
  diff -u -r1.80 -r1.80.2.1
  --- JspDocumentParser.java    6 May 2004 22:55:23 -0000       1.80
  +++ JspDocumentParser.java    10 Aug 2004 23:33:02 -0000      1.80.2.1
  @@ -199,7 +199,8 @@
               jspDocParser.err.jspError("jsp.error.data.file.read", path, ioe);
           } catch (SAXParseException e) {
               jspDocParser.err.jspError
  -                (new Mark(path, e.getLineNumber(), e.getColumnNumber()),
  +                (new Mark(jspDocParser.ctxt, path, e.getLineNumber(),
  +                          e.getColumnNumber()),
                    e.getMessage());
           } catch (Exception e) {
               jspDocParser.err.jspError(e);
  @@ -271,8 +272,8 @@
                   locator);
           }
   
  -        startMark =
  -            new Mark(path, locator.getLineNumber(), locator.getColumnNumber());
  +        startMark = new Mark(ctxt, path, locator.getLineNumber(),
  +                             locator.getColumnNumber());
   
           if (attrs != null) {
               /*
  @@ -483,7 +484,7 @@
               if (charBuffer.length() > 0) {
                   new Node.TemplateText(charBuffer.toString(), startMark, current);
               }
  -            startMark = new Mark(path, locator.getLineNumber(),
  +            startMark = new Mark(ctxt, path, locator.getLineNumber(),
                                    locator.getColumnNumber());
               charBuffer = null;
               return;
  @@ -516,7 +517,7 @@
                           ttext = new CharArrayWriter();
                           //We subtract two from the column number to
                           //account for the '${' that we've already parsed
  -                        startMark = new Mark(path, line, column - 2);
  +                        startMark = new Mark(ctxt, path, line, column - 2);
                       }
                       // following "${" to first unquoted "}"
                       i++;
  @@ -550,7 +551,7 @@
                                   startMark,
                                   current);
                               ttext = new CharArrayWriter();
  -                            startMark = new Mark(path, line, column);
  +                            startMark = new Mark(ctxt, path, line, column);
                               break;
                           }
                           if (ch == '"')
  @@ -581,8 +582,8 @@
                   new Node.TemplateText(ttext.toString(), startMark, current);
               }
           }
  -        startMark =
  -            new Mark(path, locator.getLineNumber(), locator.getColumnNumber());
  +        startMark = new Mark(ctxt, path, locator.getLineNumber(),
  +                             locator.getColumnNumber());
   
           charBuffer = null;
       }
  @@ -668,6 +669,7 @@
           if (!inDTD) {
               startMark =
                   new Mark(
  +                    ctxt,
                       path,
                       locator.getLineNumber(),
                       locator.getColumnNumber());
  @@ -681,8 +683,8 @@
       public void startCDATA() throws SAXException {
   
           processChars();  // Flush char buffer and remove white spaces
  -        startMark =
  -            new Mark(path, locator.getLineNumber(), locator.getColumnNumber());
  +        startMark = new Mark(ctxt, path, locator.getLineNumber(),
  +                             locator.getColumnNumber());
       }
   
       /*
  
  
  
  1.20.2.1  +3 -1      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ErrorDispatcher.java
  
  Index: ErrorDispatcher.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ErrorDispatcher.java,v
  retrieving revision 1.20
  retrieving revision 1.20.2.1
  diff -u -r1.20 -r1.20.2.1
  --- ErrorDispatcher.java      25 May 2004 21:27:55 -0000      1.20
  +++ ErrorDispatcher.java      10 Aug 2004 23:33:02 -0000      1.20.2.1
  @@ -385,10 +385,12 @@
                   try {
                       file = where.getURL().toString();
                   } catch (MalformedURLException me) {
  +                    // Fallback to using context-relative path
                       file = where.getFile();
                   }
               } else {
  -                // Get the context-relative resource path
  +                // Get the context-relative resource path, so as to not
  +                // disclose any local filesystem details
                   file = where.getFile();
               }
            line = where.getLineNumber();
  
  
  

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

Reply via email to