From 62642fa97e4a1bd4f3b9d253dd939da61ac2740f Mon Sep 17 00:00:00 2001 From: Aleksey Yeschenko Date: Wed, 20 Aug 2014 02:22:01 +0300 Subject: [PATCH] Validate empty cell names from counter updates patch by Aleksey Yeschenko; reviewed by Jeremiah Jordan for CASSANDRA-7798 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/cql3/Constants.java | 4 ++-- src/java/org/apache/cassandra/cql3/UpdateParameters.java | 6 ++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index db5fa3af49..7fb6de93c5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 1.2.19 + * Validate empty cell names from counter updates (CASSANDRA-7798) * Improve PasswordAuthenticator default super user setup (CASSANDRA-7788) * Remove duplicates from StorageService.getJoiningNodes (CASSANDRA-7478) * Clone token map outside of hot gossip loops (CASSANDRA-7758) diff --git a/src/java/org/apache/cassandra/cql3/Constants.java b/src/java/org/apache/cassandra/cql3/Constants.java index 4c9d856295..1c7feaf0d4 100644 --- a/src/java/org/apache/cassandra/cql3/Constants.java +++ b/src/java/org/apache/cassandra/cql3/Constants.java @@ -326,7 +326,7 @@ public abstract class Constants throw new InvalidRequestException("Invalid null value for counter increment"); long increment = ByteBufferUtil.toLong(bytes); ByteBuffer cname = columnName == null ? prefix.build() : prefix.add(columnName.key).build(); - cf.addCounter(new QueryPath(cf.metadata().cfName, null, cname), increment); + cf.addColumn(params.makeCounter(cname, increment)); } } @@ -348,7 +348,7 @@ public abstract class Constants throw new InvalidRequestException("The negation of " + increment + " overflows supported counter precision (signed 8 bytes integer)"); ByteBuffer cname = columnName == null ? prefix.build() : prefix.add(columnName.key).build(); - cf.addCounter(new QueryPath(cf.metadata().cfName, null, cname), -increment); + cf.addColumn(params.makeCounter(cname, -increment)); } } diff --git a/src/java/org/apache/cassandra/cql3/UpdateParameters.java b/src/java/org/apache/cassandra/cql3/UpdateParameters.java index b938fea2ea..3d87598930 100644 --- a/src/java/org/apache/cassandra/cql3/UpdateParameters.java +++ b/src/java/org/apache/cassandra/cql3/UpdateParameters.java @@ -57,6 +57,12 @@ public class UpdateParameters : new Column(name, value, timestamp); } + public Column makeCounter(ByteBuffer name, long delta) throws InvalidRequestException + { + QueryProcessor.validateColumnName(name); + return new CounterUpdateColumn(name, delta, System.currentTimeMillis()); + } + public Column makeTombstone(ByteBuffer name) throws InvalidRequestException { QueryProcessor.validateColumnName(name);