You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2017/02/13 14:42:40 UTC

svn commit: r1782786 - in /felix/trunk/gogo/runtime/src: main/java/org/apache/felix/gogo/runtime/Tokenizer.java test/java/org/apache/felix/gogo/runtime/TestTokenizer.java

Author: gnodet
Date: Mon Feb 13 14:42:40 2017
New Revision: 1782786

URL: http://svn.apache.org/viewvc?rev=1782786&view=rev
Log:
[FELIX-5541] ArrayIndexOutOfBoundsException in the parser

Modified:
    felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java
    felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestTokenizer.java

Modified: felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java?rev=1782786&r1=1782785&r2=1782786&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java (original)
+++ felix/trunk/gogo/runtime/src/main/java/org/apache/felix/gogo/runtime/Tokenizer.java Mon Feb 13 14:42:40 2017
@@ -107,11 +107,14 @@ public class Tokenizer extends BaseToken
                 case '>':
                 case '<':
                     t = text.subSequence(start, index);
-                    tn = text.subSequence(start, index + 1);
-                    if (redir.matcher(tn).matches())
+                    if (!eot())
                     {
-                        getch();
-                        break;
+                        tn = text.subSequence(start, index + 1);
+                        if (redir.matcher(tn).matches())
+                        {
+                            getch();
+                            break;
+                        }
                     }
                     if (redir.matcher(t).matches() && start < index - 1)
                     {

Modified: felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestTokenizer.java
URL: http://svn.apache.org/viewvc/felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestTokenizer.java?rev=1782786&r1=1782785&r2=1782786&view=diff
==============================================================================
--- felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestTokenizer.java (original)
+++ felix/trunk/gogo/runtime/src/test/java/org/apache/felix/gogo/runtime/TestTokenizer.java Mon Feb 13 14:42:40 2017
@@ -529,6 +529,13 @@ public class TestTokenizer
         }
     }
 
+    @Test
+    public void testFelix5541() {
+        Tokenizer t = new Tokenizer("<");
+        assertEquals("<", t.next().toString());
+        assertNull(t.next());
+    }
+
     private BundleContext createMockContext() throws ClassNotFoundException
     {
         Bundle systemBundle = mock(Bundle.class);