Author: astitcher
Date: Mon Jun 9 13:23:47 2014
New Revision: 1601373
URL: http://svn.apache.org/r1601373
Log:
QPID-5805: Disallow % and _ characters as escapes in selector LIKE expression
Modified:
qpid/trunk/qpid/cpp/src/qpid/broker/SelectorExpression.cpp
qpid/trunk/qpid/cpp/src/tests/Selector.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/SelectorExpression.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/SelectorExpression.cpp?rev=1601373&r1=1601372&r2=1601373&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/SelectorExpression.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/SelectorExpression.cpp Mon Jun 9
13:23:47 2014
@@ -774,6 +774,9 @@ BoolExpression* specialComparisons(Token
if (e.val.size()>1) {
throwParseError(tokeniser, "single character string required
after ESCAPE");
}
+ if (e.val=="%" || e.val=="_") {
+ throwParseError(tokeniser, "'%' and '_' are not allowed as
ESCAPE characters");
+ }
return new LikeExpression(e1.release(), t.val, e.val);
} else {
tokeniser.returnTokens();
Modified: qpid/trunk/qpid/cpp/src/tests/Selector.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/Selector.cpp?rev=1601373&r1=1601372&r2=1601373&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/Selector.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/Selector.cpp Mon Jun 9 13:23:47 2014
@@ -262,6 +262,7 @@ QPID_AUTO_TEST_CASE(parseStringFail)
BOOST_CHECK_THROW(qb::Selector e("A not 234 escape"), std::range_error);
BOOST_CHECK_THROW(qb::Selector e("A not like 'eclecti_' escape 'happy'"),
std::range_error);
BOOST_CHECK_THROW(qb::Selector e("A not like 'eclecti_' escape happy"),
std::range_error);
+ BOOST_CHECK_THROW(qb::Selector e("A not like 'eclecti_' escape '%'"),
std::range_error);
BOOST_CHECK_THROW(qb::Selector e("A BETWEEN AND 'true'"),
std::range_error);
BOOST_CHECK_THROW(qb::Selector e("A NOT BETWEEN 34 OR 3.9"),
std::range_error);
BOOST_CHECK_THROW(qb::Selector e("A IN ()"), std::range_error);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]