From 382845bc6e433761be83f42065ed098adc837799 Mon Sep 17 00:00:00 2001 From: Chandraprakash Sharma Date: Wed, 4 Nov 2015 19:18:16 +0900 Subject: [PATCH 1/3] Fixed: asShort in LongValueImpl should check isInShortRange instead of isInByteRange --- .../java/org/msgpack/value/impl/ImmutableLongValueImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msgpack-core/src/main/java/org/msgpack/value/impl/ImmutableLongValueImpl.java b/msgpack-core/src/main/java/org/msgpack/value/impl/ImmutableLongValueImpl.java index c83bda332..872b97af0 100644 --- a/msgpack-core/src/main/java/org/msgpack/value/impl/ImmutableLongValueImpl.java +++ b/msgpack-core/src/main/java/org/msgpack/value/impl/ImmutableLongValueImpl.java @@ -158,7 +158,7 @@ public byte asByte() @Override public short asShort() { - if (!isInByteRange()) { + if (!isInShortRange()) { throw new MessageIntegerOverflowException(value); } return (short) value; From 919ab704831000930b85a4d6260e68d957ce7098 Mon Sep 17 00:00:00 2001 From: Chandraprakash Sharma Date: Tue, 10 Nov 2015 11:01:57 +0900 Subject: [PATCH 2/3] added tests for integer value range checks and casts --- .../scala/org/msgpack/value/ValueTest.scala | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala b/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala index e21c387fb..2d23090ca 100644 --- a/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala +++ b/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala @@ -16,7 +16,6 @@ package org.msgpack.value import java.math.BigInteger - import org.msgpack.core._ import scala.util.parsing.json.JSON @@ -97,5 +96,35 @@ class ValueTest extends MessagePackSpec } + "check appropriate range for integers" in { + import ValueFactory._ + import java.lang.Byte + import java.lang.Short + + newInteger(Byte.MAX_VALUE).asByte() shouldBe Byte.MAX_VALUE + newInteger(Byte.MIN_VALUE).asByte() shouldBe Byte.MIN_VALUE + newInteger(Short.MAX_VALUE).asShort() shouldBe Short.MAX_VALUE + newInteger(Short.MIN_VALUE).asShort() shouldBe Short.MIN_VALUE + newInteger(Integer.MAX_VALUE).asInt() shouldBe Integer.MAX_VALUE + newInteger(Integer.MIN_VALUE).asInt() shouldBe Integer.MIN_VALUE + intercept[MessageIntegerOverflowException] { + newInteger(Byte.MAX_VALUE+1).asByte() + } + intercept[MessageIntegerOverflowException] { + newInteger(Byte.MIN_VALUE-1).asByte() + } + intercept[MessageIntegerOverflowException] { + newInteger(Short.MAX_VALUE+1).asShort() + } + intercept[MessageIntegerOverflowException] { + newInteger(Short.MIN_VALUE-1).asShort() + } + intercept[MessageIntegerOverflowException] { + newInteger(Integer.MAX_VALUE+1).asInt() + } + intercept[MessageIntegerOverflowException] { + newInteger(Integer.MIN_VALUE-1).asInt() + } + } } } From 6b9d5d315d2e7277e694f2ac2b80b2547fc44904 Mon Sep 17 00:00:00 2001 From: Chandraprakash Sharma Date: Tue, 10 Nov 2015 11:18:43 +0900 Subject: [PATCH 3/3] fixed integer literal related issue in integer range check test --- msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala b/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala index 2d23090ca..6cb7af603 100644 --- a/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala +++ b/msgpack-core/src/test/scala/org/msgpack/value/ValueTest.scala @@ -120,10 +120,10 @@ class ValueTest extends MessagePackSpec newInteger(Short.MIN_VALUE-1).asShort() } intercept[MessageIntegerOverflowException] { - newInteger(Integer.MAX_VALUE+1).asInt() + newInteger(Integer.MAX_VALUE+1.toLong).asInt() } intercept[MessageIntegerOverflowException] { - newInteger(Integer.MIN_VALUE-1).asInt() + newInteger(Integer.MIN_VALUE-1.toLong).asInt() } } }