Closed
Description
版本情况
JDK版本: openjdk_8_201
hutool-core: 5.8.23(请确保最新尝试是否还有问题)
问题描述(包括截图)
在hutool-core的5.8.23版本中,调用NumberUtil.toBigDecimal方法时,如果入参为“NaN”,程序会崩溃,报StackOverflowError
- 复现代码
import org.junit.Test;
import cn.hutool.core.util.*;
import java.math.BigDecimal;
public class NumberUtilFuzzerToBigDecimal {
@Test
public void toBigDecimalFuzzerTest() {
try {
BigDecimal result = NumberUtil.toBigDecimal("NaN");
} catch (Exception e) {
}
}
}
- 堆栈信息
java.lang.StackOverflowError
at java.base/sun.util.locale.provider.LocaleResources.getDecimalFormatSymbolsData(LocaleResources.java:172)
at java.base/java.text.DecimalFormatSymbols.initialize(DecimalFormatSymbols.java:628)
at java.base/java.text.DecimalFormatSymbols.<init>(DecimalFormatSymbols.java:113)
at java.base/sun.util.locale.provider.DecimalFormatSymbolsProviderImpl.getInstance(DecimalFormatSymbolsProviderImpl.java:85)
at java.base/java.text.DecimalFormatSymbols.getInstance(DecimalFormatSymbols.java:180)
at java.base/sun.util.locale.provider.NumberFormatProviderImpl.getInstance(NumberFormatProviderImpl.java:183)
at java.base/sun.util.locale.provider.NumberFormatProviderImpl.getNumberInstance(NumberFormatProviderImpl.java:149)
at java.base/java.text.NumberFormat.getInstance(NumberFormat.java:921)
at java.base/java.text.NumberFormat.getInstance(NumberFormat.java:907)
at java.base/java.text.NumberFormat.getInstance(NumberFormat.java:475)
at cn.hutool.core.util.NumberUtil.parseNumber(NumberUtil.java:2686)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2227)
at cn.hutool.core.util.NumberUtil.toBigDecimal(NumberUtil.java:2250)
...