You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2019/09/26 11:40:39 UTC

[cxf] branch 3.3.x-fixes updated: CXF-8123 - FIQL parser throws a StringIndexOutOfBoundsException on a wildcard character

This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/3.3.x-fixes by this push:
     new 13772a3  CXF-8123 - FIQL parser throws a StringIndexOutOfBoundsException on a wildcard character
13772a3 is described below

commit 13772a327098239e468c6b04b24afc92afd4cebd
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Thu Sep 26 12:38:59 2019 +0100

    CXF-8123 - FIQL parser throws a StringIndexOutOfBoundsException on a wildcard character
    
    (cherry picked from commit d6eafa6e6dbd47f220c6fc7835e025a11a67080d)
---
 .../cxf/jaxrs/ext/search/PrimitiveSearchCondition.java       |  3 +++
 .../org/apache/cxf/jaxrs/ext/search/fiql/FiqlParserTest.java | 12 ++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/PrimitiveSearchCondition.java b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/PrimitiveSearchCondition.java
index 9edc99c..d45e9b5 100644
--- a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/PrimitiveSearchCondition.java
+++ b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/PrimitiveSearchCondition.java
@@ -191,6 +191,9 @@ public class PrimitiveSearchCondition<T> implements SearchCondition<T> {
         if (rval.charAt(0) == '*') {
             starts = true;
             rval = rval.substring(1);
+            if (rval.isEmpty()) {
+                throw new SearchParseException("A single wildcard is not a valid search condition");
+            }
         }
         if (rval.charAt(rval.length() - 1) == '*') {
             ends = true;
diff --git a/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParserTest.java b/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParserTest.java
index 45a17ba..c3b88ef 100644
--- a/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParserTest.java
+++ b/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParserTest.java
@@ -41,6 +41,7 @@ import org.junit.Test;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 public class FiqlParserTest {
     private FiqlParser<Condition> parser = new FiqlParser<>(Condition.class);
@@ -316,6 +317,17 @@ public class FiqlParserTest {
         assertEquals("myitem", job.getTasks().get(0).getItems().get(0).getItemName());
     }
 
+    @Test
+    public void testWildcard() throws SearchParseException {
+        SearchCondition<Condition> filter = parser.parse("name==*");
+        try {
+            filter.isMet(new Condition("foobaz", 0, null));
+            fail("Failure expected on an invalid search condition");
+        } catch (SearchParseException ex) {
+            // expected
+        }
+    }
+
     @Ignore
     public static class Condition {
         private String name;