Author: centic Date: Sat Dec 30 11:11:36 2023 New Revision: 1914990 URL: http://svn.apache.org/viewvc?rev=1914990&view=rev Log: Bug 66425: Avoid exceptions found via poi-fuzz
Prevent ClassCastException Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63375 Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java Modified: poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java URL: http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java?rev=1914990&r1=1914989&r2=1914990&view=diff ============================================================================== --- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java (original) +++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java Sat Dec 30 11:11:36 2023 @@ -44,7 +44,7 @@ import org.apache.poi.ss.formula.eval.No @SuppressWarnings("serial") public class FractionFormat extends Format { private static final Logger LOGGER = LogManager.getLogger(FractionFormat.class); - private static final Pattern DENOM_FORMAT_PATTERN = Pattern.compile("(?:(#+)|(\\d+))"); + private static final Pattern DENOM_FORMAT_PATTERN = Pattern.compile("(#+)|(\\d+)"); //this was chosen to match the earlier limitation of max denom power //it can be expanded to get closer to Excel's calculations @@ -189,6 +189,10 @@ public class FractionFormat extends Form @Override public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) { + if (!(obj instanceof Number)) { + throw new IllegalArgumentException("Cannot format object of " + obj.getClass() + " to number: " + obj); + } + return toAppendTo.append(format((Number)obj)); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
