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()