You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/02/11 00:43:05 UTC

[4/5] git commit: Don't silently prepend '0' during hex-to-bytes conversion

Don't silently prepend '0' during hex-to-bytes conversion

patch by slebresne; reviewed by jbellis for CASSANDRA-2851


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3eefbac1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3eefbac1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3eefbac1

Branch: refs/heads/trunk
Commit: 3eefbac133c838db46faa6a91ba1f114192557ae
Parents: 4e6a4c0
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Fri Feb 10 20:12:55 2012 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Fri Feb 10 20:12:55 2012 +0100

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../dht/AbstractByteOrderedPartitioner.java        |    4 ++++
 src/java/org/apache/cassandra/utils/Hex.java       |    3 ++-
 test/unit/org/apache/cassandra/cli/CliTest.java    |    4 ++--
 test/unit/org/apache/cassandra/utils/HexTest.java  |    8 ++++----
 5 files changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3eefbac1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 63323e4..5d9eaf9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -70,6 +70,7 @@
  * fix system tests (CASSANDRA-3827)
  * CQL support for altering key_validation_class in ALTER TABLE (CASSANDRA-3781)
  * turn compression on by default (CASSANDRA-3871)
+ * make hexToBytes refuse invalid input (CASSANDRA-2851)
 
 
 1.0.8

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3eefbac1/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java b/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java
index 3f085e9..23c0123 100644
--- a/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java
+++ b/src/java/org/apache/cassandra/dht/AbstractByteOrderedPartitioner.java
@@ -150,6 +150,8 @@ public abstract class AbstractByteOrderedPartitioner extends AbstractPartitioner
         {
             try
             {
+                if (token.length() % 2 == 1)
+                    token = "0" + token;
                 Hex.hexToBytes(token);
             }
             catch (NumberFormatException e)
@@ -160,6 +162,8 @@ public abstract class AbstractByteOrderedPartitioner extends AbstractPartitioner
 
         public Token<byte[]> fromString(String string)
         {
+            if (string.length() % 2 == 1)
+                string = "0" + string;
             return new BytesToken(Hex.hexToBytes(string));
         }
     };

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3eefbac1/src/java/org/apache/cassandra/utils/Hex.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/Hex.java b/src/java/org/apache/cassandra/utils/Hex.java
index 757099e..7e61d9a 100644
--- a/src/java/org/apache/cassandra/utils/Hex.java
+++ b/src/java/org/apache/cassandra/utils/Hex.java
@@ -49,7 +49,8 @@ public class Hex
     public static byte[] hexToBytes(String str)
     {
         if (str.length() % 2 == 1)
-            str = "0" + str;
+            throw new NumberFormatException("An hex string representing bytes must have an even length");
+
         byte[] bytes = new byte[str.length() / 2];
         for (int i = 0; i < bytes.length; i++)
         {

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3eefbac1/test/unit/org/apache/cassandra/cli/CliTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cli/CliTest.java b/test/unit/org/apache/cassandra/cli/CliTest.java
index 5232565..db93aed 100644
--- a/test/unit/org/apache/cassandra/cli/CliTest.java
+++ b/test/unit/org/apache/cassandra/cli/CliTest.java
@@ -163,8 +163,8 @@ public class CliTest extends CleanupHelper
         "create column family myCF with column_type='Super' and comparator='UTF8Type' AND subcomparator='UTF8Type' AND default_validation_class=AsciiType;",
         "assume myCF keys as utf8;",
         "create column family Countries with comparator=UTF8Type and column_metadata=[ {column_name: name, validation_class: UTF8Type} ];",
-        "set Countries[1][name] = USA;",
-        "get Countries[1][name];",
+        "set Countries[11][name] = USA;",
+        "get Countries[11][name];",
         "update column family Countries with compaction_strategy = 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy';",
         "create column family Cities with compaction_strategy = 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy' and compaction_strategy_options = {min_sstable_size:1024};",
         "set myCF['key']['scName']['firstname'] = 'John';",

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3eefbac1/test/unit/org/apache/cassandra/utils/HexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/utils/HexTest.java b/test/unit/org/apache/cassandra/utils/HexTest.java
index 34a8b30..ece4be5 100644
--- a/test/unit/org/apache/cassandra/utils/HexTest.java
+++ b/test/unit/org/apache/cassandra/utils/HexTest.java
@@ -42,11 +42,11 @@ public class HexTest
     {
         String[] values = new String[]
         {
-            "0",
+            "00",
             "10",
-            "100",
-            "101",
-            "f",
+            "0100",
+            "0101",
+            "0f",
             "ff"
         };
         byte[][] expected = new byte[][]