From 94add743392154b35eedd7e2503e48f581c53ace Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kraus?= Date: Fri, 4 Aug 2023 13:14:51 +0200 Subject: [PATCH] BigInteger scale limit checks for Integer.MAX_VALUE and Integer.MIN_VALUE. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomáš Kraus --- impl/src/main/java/org/eclipse/parsson/JsonNumberImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/impl/src/main/java/org/eclipse/parsson/JsonNumberImpl.java b/impl/src/main/java/org/eclipse/parsson/JsonNumberImpl.java index 2dcb552d..6a646683 100644 --- a/impl/src/main/java/org/eclipse/parsson/JsonNumberImpl.java +++ b/impl/src/main/java/org/eclipse/parsson/JsonNumberImpl.java @@ -287,7 +287,7 @@ public double doubleValue() { @Override public BigInteger bigIntegerValue() { BigDecimal bd = bigDecimalValue(); - if (Math.abs(bd.scale()) <= bigIntegerScaleLimit) { + if (Math.abs(bd.scale()) <= bigIntegerScaleLimit && Integer.MIN_VALUE < bd.scale() && Integer.MAX_VALUE > bd.scale()) { return bd.toBigInteger(); } throw new UnsupportedOperationException( @@ -297,7 +297,7 @@ public BigInteger bigIntegerValue() { @Override public BigInteger bigIntegerValueExact() { BigDecimal bd = bigDecimalValue(); - if (Math.abs(bd.scale()) <= bigIntegerScaleLimit) { + if (Math.abs(bd.scale()) <= bigIntegerScaleLimit && Integer.MIN_VALUE < bd.scale() && Integer.MAX_VALUE > bd.scale()) { return bd.toBigIntegerExact(); } throw new UnsupportedOperationException(