You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by gd...@apache.org on 2010/08/19 23:01:22 UTC
svn commit: r987311 - in /cassandra/trunk:
src/java/org/apache/cassandra/utils/FBUtilities.java
test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
Author: gdusbabek
Date: Thu Aug 19 21:01:22 2010
New Revision: 987311
URL: http://svn.apache.org/viewvc?rev=987311&view=rev
Log:
FBUtilities.hexToBytes doesn't handle odd-length strings. patch by Gary Dusbabek, reviewed by Jon Hermes. CASSANDRA-1411
Modified:
cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
cassandra/trunk/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
Modified: cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java?rev=987311&r1=987310&r2=987311&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java Thu Aug 19 21:01:22 2010
@@ -304,7 +304,8 @@ public class FBUtilities
public static byte[] hexToBytes(String str)
{
- assert str.length() % 2 == 0;
+ if (str.length() % 2 == 1)
+ str = "0" + str;
byte[] bytes = new byte[str.length()/2];
for (int i = 0; i < bytes.length; i++)
{
Modified: cassandra/trunk/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java?rev=987311&r1=987310&r2=987311&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java Thu Aug 19 21:01:22 2010
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEqu
import java.io.IOException;
import java.nio.charset.CharacterCodingException;
+import java.util.Arrays;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.cassandra.db.IClock;
@@ -44,6 +45,32 @@ public class FBUtilitiesTest
assertArrayEquals(b, c);
}
}
+
+ @Test
+ public void testHexToBytesStringConversion()
+ {
+ String[] values = new String[]
+ {
+ "0",
+ "10",
+ "100",
+ "101",
+ "f",
+ "ff"
+ };
+ byte[][] expected = new byte[][]
+ {
+ new byte[] { 0x00 },
+ new byte[] { 0x10 },
+ new byte[] { 0x01, 0x00 },
+ new byte[] { 0x01, 0x01 },
+ new byte[] { 0x0f },
+ new byte[] { (byte)0x000000ff }
+ };
+
+ for (int i = 0; i < values.length; i++)
+ assert Arrays.equals(FBUtilities.hexToBytes(values[i]), expected[i]);
+ }
@Test
public void testIntBytesConversions()