From 230d50d81be160cf1c0b39422cab4d6beff009f7 Mon Sep 17 00:00:00 2001 From: AppleDash Date: Sun, 2 Oct 2016 12:06:04 -0400 Subject: [PATCH] Fix potential infinity exploit. --- .../org/appledash/saneeconomy/utils/NumberUtils.java | 4 ++++ .../appledash/saneeconomy/test/NumberUtilsTest.java | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/NumberUtils.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/NumberUtils.java index 49e9402..f64324a 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/NumberUtils.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/utils/NumberUtils.java @@ -36,6 +36,10 @@ public class NumberUtils { return INVALID_DOUBLE; } + if (Double.isInfinite(doub) || Double.isNaN(doub)) { + return INVALID_DOUBLE; + } + return doub; } diff --git a/SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/NumberUtilsTest.java b/SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/NumberUtilsTest.java index d1c2671..d928345 100644 --- a/SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/NumberUtilsTest.java +++ b/SaneEconomyCore/src/test/java/org/appledash/saneeconomy/test/NumberUtilsTest.java @@ -16,12 +16,14 @@ public class NumberUtilsTest { @Test public void testParsePositive() { // Valid input - Assert.assertEquals(NumberUtils.parsePositiveDouble("69.0"), 69.0, 0.0); + Assert.assertEquals(69.0, NumberUtils.parsePositiveDouble("69.0"), 0.0); // Valid but not positive - Assert.assertEquals(NumberUtils.parsePositiveDouble("-10.0"), -1.0, 0.0); + Assert.assertEquals(-1.0, NumberUtils.parsePositiveDouble("-10.0"), 0.0); // Invalid - Assert.assertEquals(NumberUtils.parsePositiveDouble("nan"), -1.0, 0.0); - Assert.assertEquals(NumberUtils.parsePositiveDouble("ponies"), -1.0, 0.0); + Assert.assertEquals(-1.0, NumberUtils.parsePositiveDouble("nan"), 0.0); + Assert.assertEquals(-1.0, NumberUtils.parsePositiveDouble("ponies"), 0.0); + // Infinite + Assert.assertEquals(-1.0, NumberUtils.parsePositiveDouble("1E1000000000"), 0.0); } @Test