Repository: cassandra
Updated Branches:
  refs/heads/trunk 6e7934280 -> 28497fd11


Fix potential NumberFormatException when deserializing IntegerType

patch by slebresne; reviewed by jbellis for CASSANDRA-7088


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

Branch: refs/heads/trunk
Commit: d6f32e4fc08031d4235a9209c745600bf070907b
Parents: 0490abf
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Thu May 8 18:03:08 2014 +0200
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Thu May 8 18:03:08 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                                    | 1 +
 src/java/org/apache/cassandra/db/marshal/AbstractType.java     | 3 +--
 .../apache/cassandra/serializers/InetAddressSerializer.java    | 2 +-
 .../org/apache/cassandra/serializers/IntegerSerializer.java    | 6 +++---
 src/java/org/apache/cassandra/serializers/LongSerializer.java  | 2 +-
 .../org/apache/cassandra/serializers/TimestampSerializer.java  | 2 +-
 src/java/org/apache/cassandra/serializers/UUIDSerializer.java  | 2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/d6f32e4f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0acf740..a6cbc18 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,7 @@
  * return all cpu values from BackgroundActivityMonitor.readAndCompute 
(CASSANDRA-7183)
  * fix c* launch issues on Russian os's due to output of linux 'free' cmd 
(CASSANDRA-6162)
  * Fix disabling autocompaction (CASSANDRA-7187)
+ * Fix potential NumberFormatException when deserializing IntegerType 
(CASSANDRA-7088)
 
 2.0.8
  * Correctly delete scheduled range xfers (CASSANDRA-7143)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d6f32e4f/src/java/org/apache/cassandra/db/marshal/AbstractType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/AbstractType.java 
b/src/java/org/apache/cassandra/db/marshal/AbstractType.java
index ffba918..a38733c 100644
--- a/src/java/org/apache/cassandra/db/marshal/AbstractType.java
+++ b/src/java/org/apache/cassandra/db/marshal/AbstractType.java
@@ -153,8 +153,7 @@ public abstract class AbstractType<T> implements 
Comparator<ByteBuffer>
         TypeSerializer<T> serializer = getSerializer();
         serializer.validate(bytes);
 
-        T value = serializer.deserialize(bytes);
-        return value == null ? "null" : serializer.toString(value);
+        return serializer.toString(serializer.deserialize(bytes));
     }
 
     /** get a byte representation of the given string. */

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d6f32e4f/src/java/org/apache/cassandra/serializers/InetAddressSerializer.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/serializers/InetAddressSerializer.java 
b/src/java/org/apache/cassandra/serializers/InetAddressSerializer.java
index f5406f2..3014753 100644
--- a/src/java/org/apache/cassandra/serializers/InetAddressSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/InetAddressSerializer.java
@@ -65,7 +65,7 @@ public class InetAddressSerializer implements 
TypeSerializer<InetAddress>
 
     public String toString(InetAddress value)
     {
-        return value.getHostAddress();
+        return value == null ? "" : value.getHostAddress();
     }
 
     public Class<InetAddress> getType()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d6f32e4f/src/java/org/apache/cassandra/serializers/IntegerSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/serializers/IntegerSerializer.java 
b/src/java/org/apache/cassandra/serializers/IntegerSerializer.java
index b028cd4..9d9505d 100644
--- a/src/java/org/apache/cassandra/serializers/IntegerSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/IntegerSerializer.java
@@ -29,12 +29,12 @@ public class IntegerSerializer implements 
TypeSerializer<BigInteger>
 
     public BigInteger deserialize(ByteBuffer bytes)
     {
-        return new BigInteger(ByteBufferUtil.getArray(bytes));
+        return bytes.hasRemaining() ? new 
BigInteger(ByteBufferUtil.getArray(bytes)) : null;
     }
 
     public ByteBuffer serialize(BigInteger value)
     {
-        return ByteBuffer.wrap(value.toByteArray());
+        return value == null ? ByteBufferUtil.EMPTY_BYTE_BUFFER : 
ByteBuffer.wrap(value.toByteArray());
     }
 
     public void validate(ByteBuffer bytes) throws MarshalException
@@ -44,7 +44,7 @@ public class IntegerSerializer implements 
TypeSerializer<BigInteger>
 
     public String toString(BigInteger value)
     {
-        return value.toString(10);
+        return value == null ? "" : value.toString(10);
     }
 
     public Class<BigInteger> getType()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d6f32e4f/src/java/org/apache/cassandra/serializers/LongSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/serializers/LongSerializer.java 
b/src/java/org/apache/cassandra/serializers/LongSerializer.java
index 277c395..e5ab43a 100644
--- a/src/java/org/apache/cassandra/serializers/LongSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/LongSerializer.java
@@ -44,7 +44,7 @@ public class LongSerializer implements TypeSerializer<Long>
 
     public String toString(Long value)
     {
-        return String.valueOf(value);
+        return value == null ? "" : String.valueOf(value);
     }
 
     public Class<Long> getType()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d6f32e4f/src/java/org/apache/cassandra/serializers/TimestampSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/serializers/TimestampSerializer.java 
b/src/java/org/apache/cassandra/serializers/TimestampSerializer.java
index 6203427..f2a40f1 100644
--- a/src/java/org/apache/cassandra/serializers/TimestampSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/TimestampSerializer.java
@@ -72,7 +72,7 @@ public class TimestampSerializer implements 
TypeSerializer<Date>
 
     public String toString(Date value)
     {
-        return FORMATTER.get().format(value);
+        return value == null ? "" : FORMATTER.get().format(value);
     }
 
     public Class<Date> getType()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d6f32e4f/src/java/org/apache/cassandra/serializers/UUIDSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/serializers/UUIDSerializer.java 
b/src/java/org/apache/cassandra/serializers/UUIDSerializer.java
index 0e64fca..f8e2582 100644
--- a/src/java/org/apache/cassandra/serializers/UUIDSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/UUIDSerializer.java
@@ -46,7 +46,7 @@ public class UUIDSerializer implements TypeSerializer<UUID>
 
     public String toString(UUID value)
     {
-        return value.toString();
+        return value == null ? "" : value.toString();
     }
 
     public Class<UUID> getType()

Reply via email to