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 ( &lt;%!, &lt;jsp:declaration, 
&lt;%=, &lt;jsp:expression, &lt;%, &lt;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 (&lt;%!, 
&lt;jsp:declaration, &lt;%=, &lt;jsp:expression, &lt;%, &lt;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=スクリプティング要素 ( 
&lt;%!、&lt;jsp:declaration、&lt;%=、&lt;jsp:expression、&lt;%、&lt;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

Reply via email to