You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ty...@apache.org on 2014/06/27 16:29:13 UTC
git commit: Properly handle unrecognized opcodes and flags
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.0 2b973b9ed -> e32423159
Properly handle unrecognized opcodes and flags
Patch by Tyler Hobbs; reviewed by Sylvain Lebresne for CASSANDRA-7440
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e3242315
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e3242315
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e3242315
Branch: refs/heads/cassandra-2.0
Commit: e32423159d9b31131cc95bccfcfa6b5dabbc070a
Parents: 2b973b9
Author: Tyler Hobbs <ty...@datastax.com>
Authored: Fri Jun 27 09:28:18 2014 -0500
Committer: Tyler Hobbs <ty...@datastax.com>
Committed: Fri Jun 27 09:28:18 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/transport/Frame.java | 7 ++++---
src/java/org/apache/cassandra/transport/Message.java | 2 ++
3 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e3242315/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 365722f..d587a94 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,7 @@
* Fix race in FileCacheService RemovalListener (CASSANDRA-7278)
* Fix inconsistent use of consistencyForCommit that allowed LOCAL_QUORUM
operations to incorrect become full QUORUM (CASSANDRA-7345)
+ * Properly handle unrecognized opcodes and flags (CASSANDRA-7440)
2.0.9
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e3242315/src/java/org/apache/cassandra/transport/Frame.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/transport/Frame.java b/src/java/org/apache/cassandra/transport/Frame.java
index 6472b39..89755df 100644
--- a/src/java/org/apache/cassandra/transport/Frame.java
+++ b/src/java/org/apache/cassandra/transport/Frame.java
@@ -92,14 +92,15 @@ public class Frame
COMPRESSED,
TRACING;
+ private static final Flag[] ALL_VALUES = values();
+
public static EnumSet<Flag> deserialize(int flags)
{
EnumSet<Flag> set = EnumSet.noneOf(Flag.class);
- Flag[] values = Flag.values();
- for (int n = 0; n < 8; n++)
+ for (int n = 0; n < ALL_VALUES.length; n++)
{
if ((flags & (1 << n)) != 0)
- set.add(values[n]);
+ set.add(ALL_VALUES[n]);
}
return set;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e3242315/src/java/org/apache/cassandra/transport/Message.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/transport/Message.java b/src/java/org/apache/cassandra/transport/Message.java
index 0731081..eea3b48 100644
--- a/src/java/org/apache/cassandra/transport/Message.java
+++ b/src/java/org/apache/cassandra/transport/Message.java
@@ -103,6 +103,8 @@ public abstract class Message
public static Type fromOpcode(int opcode, Direction direction)
{
+ if (opcode >= opcodeIdx.length)
+ throw new ProtocolException(String.format("Unknown opcode %d", opcode));
Type t = opcodeIdx[opcode];
if (t == null)
throw new ProtocolException(String.format("Unknown opcode %d", opcode));