Updated Branches: refs/heads/trunk 99b0076c7 -> 122bb6b20
Throw IRE if a prepared query has more markers than supported patch by lyubent; reviewed by slebresne for CASSANDRA-5598 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a322b645 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a322b645 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a322b645 Branch: refs/heads/trunk Commit: a322b645e6725fae4b4b765ff1b6e6375efe24d5 Parents: 4bdd7f8 Author: Sylvain Lebresne <[email protected]> Authored: Thu Nov 28 09:07:45 2013 +0100 Committer: Sylvain Lebresne <[email protected]> Committed: Thu Nov 28 09:07:45 2013 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/cql3/QueryProcessor.java | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a322b645/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 0c7bb29..f84ffec 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,7 @@ * Don't list CQL3 table in CLI describe even if named explicitely (CASSANDRA-5750) * cqlsh: quote single quotes in strings inside collections (CASSANDRA-6172) * Improve gossip performance for typical messages (CASSANDRA-6409) + * Throw IRE if a prepared has more markers than supported (CASSANDRA-5598) 1.2.12 http://git-wip-us.apache.org/repos/asf/cassandra/blob/a322b645/src/java/org/apache/cassandra/cql3/QueryProcessor.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java index 40b9339..a62b248 100644 --- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java +++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java @@ -220,7 +220,10 @@ public class QueryProcessor ParsedStatement.Prepared prepared = getStatement(queryString, clientState); ResultMessage.Prepared msg = storePreparedStatement(queryString, clientState.getRawKeyspace(), prepared, forThrift); - assert prepared.statement.getBoundsTerms() == prepared.boundNames.size(); + int bountTerms = prepared.statement.getBoundsTerms(); + if (bountTerms > FBUtilities.MAX_UNSIGNED_SHORT) + throw new InvalidRequestException(String.format("Too many markers(?). %d markers exceed the allowed maximum of %d", bountTerms, FBUtilities.MAX_UNSIGNED_SHORT)); + assert bountTerms == prepared.boundNames.size(); return msg; }
