Author: markt Date: Wed Sep 5 08:27:38 2018 New Revision: 1840099 URL: http://svn.apache.org/viewvc?rev=1840099&view=rev Log: Correct parsing of XML whitespace in TLD function signatures that incorrectly only looked for the space character.
Modified: tomcat/trunk/java/org/apache/jasper/compiler/Validator.java tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/jasper/compiler/Validator.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/Validator.java?rev=1840099&r1=1840098&r2=1840099&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/Validator.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/Validator.java Wed Sep 5 08:27:38 2018 @@ -25,6 +25,8 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.el.ELException; import javax.el.ExpressionFactory; @@ -420,6 +422,9 @@ class Validator { */ private static class ValidateVisitor extends Node.Visitor { + // Pattern to extract a method name from a full method signature + private static final Pattern METHOD_NAME_PATTERN = Pattern.compile(".*[ \t\n\r]+(.+)[ \t\n\r]*\\(.*"); + private final PageInfo pageInfo; private final ErrorDispatcher err; @@ -1640,18 +1645,13 @@ class Validator { FunctionInfo funcInfo = func.getFunctionInfo(); String signature = funcInfo.getFunctionSignature(); - int start = signature.indexOf(' '); - if (start < 0) { + Matcher m = METHOD_NAME_PATTERN.matcher(signature); + if (!m.matches()) { err.jspError("jsp.error.tld.fn.invalid.signature", func .getPrefix(), func.getName()); } - int end = signature.indexOf('('); - if (end < 0) { - err.jspError( - "jsp.error.tld.fn.invalid.signature.parenexpected", - func.getPrefix(), func.getName()); - } - return signature.substring(start + 1, end).trim(); + + return m.group(1); } /** Modified: tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties?rev=1840099&r1=1840098&r2=1840099&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties [UTF-8] (original) +++ tomcat/trunk/java/org/apache/jasper/resources/LocalStrings.properties [UTF-8] Wed Sep 5 08:27:38 2018 @@ -270,7 +270,6 @@ jsp.error.jspbody.emptybody.only=The [{0 jsp.error.no.scriptlets=Scripting elements ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) are disallowed here. jsp.error.tld.fn.invalid.signature=Invalid syntax for function signature in TLD. Tag Library: [{0}], Function: [{1}] jsp.error.tld.fn.duplicate.name=Duplicate function name [{0}] in tag library [{1}] -jsp.error.tld.fn.invalid.signature.parenexpected=Invalid syntax for function signature in TLD. Parenthesis ''('' expected. Tag Library: [{0}], Function: [{1}]. jsp.error.tld.mandatory.element.missing=Mandatory TLD element [{0}] missing or empty in TLD [{1}] jsp.error.dynamic.attributes.not.implemented=The [{0}] tag declares that it accepts dynamic attributes but does not implement the required interface jsp.error.attribute.noequal=equal symbol expected Modified: tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties?rev=1840099&r1=1840098&r2=1840099&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties [UTF-8] (original) +++ tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_es.properties [UTF-8] Wed Sep 5 08:27:38 2018 @@ -258,7 +258,6 @@ jsp.error.jspbody.emptybody.only = El ta jsp.error.no.scriptlets = Los elementos de Scripting (<%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) no están permitidos aquí. jsp.error.tld.fn.invalid.signature = Sintáxis incorrecta para firma de función en TLD. Biblioteca de Tag: [{0}], Función: [{1}] jsp.error.tld.fn.duplicate.name = Nombre duplicado de función [{0}] en biblioteca de tag [{1}] -jsp.error.tld.fn.invalid.signature.parenexpected = Sintáxis incorrecta para firma de función en TLD. Se esperaba Paréntesis ''(''. Biblioteca de Tag: [{0}], Función: [{1}]. jsp.error.tld.mandatory.element.missing = Falta o está vacío elemento TLD obligatorio: [{0}] jsp.error.dynamic.attributes.not.implemented = El tag [{0}] declara que acepta atributos dinámicos pero no implementa la interfaz requerida jsp.error.attribute.noequal = se esperaba símbolo igual Modified: tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties?rev=1840099&r1=1840098&r2=1840099&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties [UTF-8] (original) +++ tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_fr.properties [UTF-8] Wed Sep 5 08:27:38 2018 @@ -188,7 +188,6 @@ jsp.error.jspbody.required=Doit utiliser jsp.error.jspbody.emptybody.only=Le tag [{0}] ne peut avoir que jsp:attribute dans son corps. jsp.error.no.scriptlets=Les éléments de Scripting ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) ne sont pas autorisés ici. jsp.error.tld.fn.invalid.signature=Synthaxe invalide pour la signature de fonction dans la TLD. Bibliothèque de Tag : [{0}], Fonction: [{1}] -jsp.error.tld.fn.invalid.signature.parenexpected=Synthaxe invalide pour la signature de fonction dans la TLD. Parenthèse ''('' attendue. Bibliothèque de Tag: [{0}], Fonction: [{1}]. jsp.error.dynamic.attributes.not.implemented=Le tag [{0}] indique qu''il accepte des attributs dynamics mais n''implémente pas l''interface requise jsp.error.attribute.noequal=Symbole égal (equal) attendu jsp.error.attribute.noquote=Symbole guillemet (quote) attendu Modified: tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties?rev=1840099&r1=1840098&r2=1840099&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties [UTF-8] (original) +++ tomcat/trunk/java/org/apache/jasper/resources/LocalStrings_ja.properties [UTF-8] Wed Sep 5 08:27:38 2018 @@ -231,7 +231,6 @@ jsp.error.jspbody.emptybody.only=[{0}] � jsp.error.no.scriptlets=スクリプティング要素 ( <%!、<jsp:declaration、<%=、<jsp:expression、<%、<jsp:scriptlet ) はここでは許されません jsp.error.tld.fn.invalid.signature=TLDの中の関数シグネチャに対する無効な構文です。タグライブラリ: [{0}]、関数: [{1}] jsp.error.tld.fn.duplicate.name=タグライブラリ [{1}] の中の関数名 [{0}] が重複しています -jsp.error.tld.fn.invalid.signature.parenexpected=TLDの中の関数シグネチャに対する無効な構文です。括弧 ''('' がありません。タグライブラリ: [{0}]、関数: [{1}]。 jsp.error.tld.mandatory.element.missing=必須TLD要素がない、又は空です: [{0}] jsp.error.dynamic.attributes.not.implemented=[{0}] タグはそれがdynamic属性を受け付けると宣言していますが、それに必要なインタフェースを実装していません jsp.error.attribute.noequal=等号記号が必要です Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1840099&r1=1840098&r2=1840099&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Sep 5 08:27:38 2018 @@ -45,6 +45,14 @@ issues do not "pop up" wrt. others). --> <section name="Tomcat 9.0.13 (markt)" rtext="in development"> + <subsection name="Jasper"> + <changelog> + <fix> + Correct parsing of XML whitespace in TLD function signatures that + incorrectly only looked for the space character. (markt) + </fix> + </changelog> + </subsection> </section> <section name="Tomcat 9.0.12 (markt)" rtext="release in progress"> <subsection name="Catalina"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org