You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by ar...@apache.org on 2002/04/04 16:01:56 UTC

cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test parserTests.txt parserTestsOutput.txt

arista      02/04/04 06:01:56

  Modified:    standard/src/org/apache/taglibs/standard/lang/jstl
                        ELParser.jj
               standard/src/org/apache/taglibs/standard/lang/jstl/parser
                        ELParserTokenManager.java
               standard/src/org/apache/taglibs/standard/lang/jstl/test
                        parserTests.txt parserTestsOutput.txt
  Log:
  Bug 7737 - EL evaluator incorrectly attempts to evaluated string values containing '$'
  
  The problem should only be showing up in attribute values that end
  with "$".  This has been fixed by adding a lone "$" to the
  "NON_EXPRESSION_TEXT" token.
  
  Revision  Changes    Path
  1.7       +1 -1      jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/ELParser.jj
  
  Index: ELParser.jj
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/ELParser.jj,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ELParser.jj	1 Apr 2002 16:03:33 -0000	1.6
  +++ ELParser.jj	4 Apr 2002 14:01:56 -0000	1.7
  @@ -44,7 +44,7 @@
   <DEFAULT> TOKEN:
   {
     < NON_EXPRESSION_TEXT:
  -    ( ~["$"] | ("$" ~["{"]) )+
  +    (( ~["$"] | ("$" ~["{"]) )+) | "$"
     >
   |
     < START_EXPRESSION: "${" > : IN_EXPRESSION
  
  
  
  1.5       +11 -4     jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParserTokenManager.java
  
  Index: ELParserTokenManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/parser/ELParserTokenManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ELParserTokenManager.java	20 Mar 2002 13:51:59 -0000	1.4
  +++ ELParserTokenManager.java	4 Apr 2002 14:01:56 -0000	1.5
  @@ -14,7 +14,10 @@
      {
         case 0:
            if ((active0 & 0x4L) != 0L)
  +         {
  +            jjmatchedKind = 1;
               return 2;
  +         }
            return -1;
         default :
            return -1;
  @@ -106,7 +109,7 @@
   {
      int[] nextStates;
      int startsAt = 0;
  -   jjnewStateCnt = 3;
  +   jjnewStateCnt = 4;
      int i = 1;
      jjstateSet[0] = startState;
      int j, kind = 0x7fffffff;
  @@ -129,7 +132,11 @@
                        jjCheckNAddTwoStates(0, 1);
                     }
                     else if (curChar == 36)
  -                     jjstateSet[jjnewStateCnt++] = 2;
  +                  {
  +                     if (kind > 1)
  +                        kind = 1;
  +                     jjCheckNAdd(2);
  +                  }
                     break;
                  case 0:
                     if ((0xffffffefffffffffL & l) == 0L)
  @@ -140,7 +147,7 @@
                     break;
                  case 1:
                     if (curChar == 36)
  -                     jjstateSet[jjnewStateCnt++] = 2;
  +                     jjCheckNAdd(2);
                     break;
                  case 2:
                     if (kind > 1)
  @@ -206,7 +213,7 @@
            kind = 0x7fffffff;
         }
         ++curPos;
  -      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
  +      if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
            return curPos;
         try { curChar = input_stream.readChar(); }
         catch(java.io.IOException e) { return curPos; }
  
  
  
  1.2       +8 -0      jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/parserTests.txt
  
  Index: parserTests.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/parserTests.txt,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- parserTests.txt	5 Mar 2002 14:10:46 -0000	1.1
  +++ parserTests.txt	4 Apr 2002 14:01:56 -0000	1.2
  @@ -7,6 +7,14 @@
   ${ 1 }${ 2 }
   abc ${ 1} ${ 2} def
   
  +# testing values that end with or contain "$"
  +$
  +\$
  +  $  
  +test$
  +$test
  +test$test
  +
   # literals
   ${1}
   ${-12}
  
  
  
  1.3       +16 -2     jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/parserTestsOutput.txt
  
  Index: parserTestsOutput.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/lang/jstl/test/parserTestsOutput.txt,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- parserTestsOutput.txt	20 Mar 2002 13:51:59 -0000	1.2
  +++ parserTestsOutput.txt	4 Apr 2002 14:01:56 -0000	1.3
  @@ -14,6 +14,20 @@
   Attribute value: abc ${ 1} ${ 2} def
   Parses to: abc ${1} ${2} def
   
  +# testing values that end with or contain "$"
  +Attribute value: $
  +Parses to: $
  +Attribute value: \$
  +Parses to: \$
  +Attribute value:   $  
  +Parses to:   $  
  +Attribute value: test$
  +Parses to: test$
  +Attribute value: $test
  +Parses to: $test
  +Attribute value: test$test
  +Parses to: test$test
  +
   # literals
   Attribute value: ${1}
   Parses to: ${1}
  @@ -96,7 +110,7 @@
   Attribute value: ${a .b .c}
   Parses to: ${a.b.c}
   Attribute value: ${ abc . 'def.ghi' . ghi . "jkl \"" }
  -Parses to: ${abc."def.ghi".ghi."jkl \""}
  +Causes an error: Unable to parse custom action attribute "test" with value "${ abc . 'def.ghi' . ghi . "jkl \"" }": encountered "'def.ghi'", expected one of ""pageContext", "page", "request", "session", "application", "param", "params", <IDENTIFIER>"
   
   # array accessors
   Attribute value: ${ a[14] }
  @@ -130,5 +144,5 @@
   
   # array accessors of non-integer types
   Attribute value: ${  a ["hello"]."12" [17.5] }
  -Parses to: ${a["hello"]."12"[17.5]}
  +Causes an error: Unable to parse custom action attribute "test" with value "${  a ["hello"]."12" [17.5] }": encountered ""12"", expected one of ""pageContext", "page", "request", "session", "application", "param", "params", <IDENTIFIER>"
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>