Author: markt Date: Sat Nov 11 20:27:08 2006 New Revision: 473871 URL: http://svn.apache.org/viewvc?view=rev&rev=473871 Log: Fix bug 40797. Use 0xe000 rather than 0x1b as the hack character since 0x1b causes problems with tld validation. Deprecate the old constants and create new ones.
Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/Constants.java tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Generator.java tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/JspUtil.java tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Parser.java Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=473871&r1=473870&r2=473871 ============================================================================== --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Sat Nov 11 20:27:08 2006 @@ -104,7 +104,7 @@ </fix> <update> Set the <code>SCRIPT_FILENAME</code> environment variable required - by PHP when using the CGIServlet to execute PHP. + by PHP when using the CGIServlet to execute PHP. (markt) </update> <fix> <bug>40823</bug>: Update context doc to clarify use of ROOT.xml, @@ -135,6 +135,17 @@ <bug>40771</bug>: Fix implementation of SavedRequestInputFilter.doRead() so POST data may be read using a Valve or Filter. Patch provided by Michael Dufel. (markt) + </fix> + </changelog> + </subsection> + <subsection name="Jasper"> + <changelog> + <fix> + <bug>40797</bug>: This was a regression as a result of the fix for + <bug>33407</bug>. TLD validation was failing as a result of the use + of the escape character (0x1b) as a temporary replacement for \$. + An alternative character (0xe000) from the unicode private use range + is now used. (markt) </fix> </changelog> </subsection> Modified: tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/Constants.java URL: http://svn.apache.org/viewvc/tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/Constants.java?view=diff&rev=473871&r1=473870&r2=473871 ============================================================================== --- tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/Constants.java (original) +++ tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/Constants.java Sat Nov 11 20:27:08 2006 @@ -186,10 +186,30 @@ "_jspx_temp"; /** - * A replacement char for "\$". - * XXX This is a hack to avoid changing EL interpreter to recognize "\$" + * Previous replacement char for "\$". + * @deprecated */ public static final char ESC='\u001b'; + + /** + * Previous replacement char for "\$". + * @deprecated + */ public static final String ESCStr="'\\u001b'"; + + /** + * Replacement char for "\$". This is the first unicode character in the + * private use area. + * XXX This is a hack to avoid changing EL interpreter to recognize "\$" + */ + public static final char HACK_CHAR = '\ue000'; + + /** + * Replacement string for "\$". This is the first unicode character in the + * private use area. + * XXX This is a hack to avoid changing EL interpreter to recognize "\$" + */ + public static final String HACK_STR = "'\\ue000'"; + } Modified: tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Generator.java URL: http://svn.apache.org/viewvc/tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Generator.java?view=diff&rev=473871&r1=473870&r2=473871 ============================================================================== --- tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Generator.java (original) +++ tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Generator.java Sat Nov 11 20:27:08 2006 @@ -750,7 +750,7 @@ } return v; } else if (attr.isELInterpreterInput()) { - boolean replaceESC = v.indexOf(Constants.ESC) > 0; + boolean replaceESC = v.indexOf(Constants.HACK_CHAR) > 0; v = JspUtil.interpreterCall( this.isTagFile, @@ -758,9 +758,9 @@ expectedType, attr.getEL().getMapName(), false); - // XXX ESC replacement hack + // XXX hack replacement if (replaceESC) { - v = "(" + v + ").replace(" + Constants.ESCStr + ", '$')"; + v = "(" + v + ").replace(" + Constants.HACK_STR + ", '$')"; } if (encode) { return "org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode(" @@ -1888,12 +1888,13 @@ } // Replace marker for \$ sequence with correct sequence - if (text.indexOf(Constants.ESC) > 0) { + if (text.indexOf(Constants.HACK_CHAR) > 0) { if (pageInfo.isELIgnored()) { - text = text.replaceAll(String.valueOf(Constants.ESC), "\\\\\\$"); + text = text.replaceAll(String.valueOf(Constants.HACK_CHAR), + "\\\\\\$"); textSize++; } else { - text = text.replace(Constants.ESC, '$'); + text = text.replace(Constants.HACK_CHAR, '$'); } } @@ -2742,7 +2743,7 @@ } } else if (attr.isELInterpreterInput()) { // run attrValue through the expression interpreter - boolean replaceESC = attrValue.indexOf(Constants.ESC) > 0; + boolean replaceESC = attrValue.indexOf(Constants.HACK_CHAR) > 0; attrValue = JspUtil.interpreterCall( this.isTagFile, @@ -2756,7 +2757,7 @@ "(" + attrValue + ").replace(" - + Constants.ESCStr + + Constants.HACK_STR + ", '$')"; } } else { Modified: tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/JspUtil.java URL: http://svn.apache.org/viewvc/tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/JspUtil.java?view=diff&rev=473871&r1=473870&r2=473871 ============================================================================== --- tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/JspUtil.java (original) +++ tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/JspUtil.java Sat Nov 11 20:27:08 2006 @@ -187,7 +187,7 @@ returnString = expression; } - return escapeXml(returnString.replace(Constants.ESC, '$')); + return escapeXml(returnString.replace(Constants.HACK_CHAR, '$')); } /** Modified: tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Parser.java URL: http://svn.apache.org/viewvc/tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Parser.java?view=diff&rev=473871&r1=473870&r2=473871 ============================================================================== --- tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Parser.java (original) +++ tomcat/jasper/tc5.5.x/src/share/org/apache/jasper/compiler/Parser.java Sat Nov 11 20:27:08 2006 @@ -289,7 +289,7 @@ i += 2; } else if (ch == '$') { // Replace "\$" with some special char. XXX hack! - buf.append(Constants.ESC); + buf.append(Constants.HACK_CHAR); i += 2; } else { buf.append('\\'); @@ -1433,7 +1433,7 @@ } else if(next == '$') { // Skip the $ and use a hack to flag this sequence reader.nextChar(); - ch = Constants.ESC; + ch = Constants.HACK_CHAR; } } ttext.write(ch); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]