Bug 66425: Avoid exceptions found via poi-fuzz

Fix check after commit fcaac5073716b98cba26c0655f06f20e310fd85e
so that other IndexOutOfBoundsExceptions are still thrown out

Also free resources when throwing an exception in the constructor

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912799 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2023-10-07 22:12:58 +00:00
parent 2bd84bf25c
commit e670061518
1 changed files with 22 additions and 2 deletions

View File

@ -63,8 +63,16 @@ public class SXSSFSheet implements Sheet, OoxmlSheetExtensions {
setRandomAccessWindowSize(randomAccessWindowSize);
try {
_autoSizeColumnTracker = new AutoSizeColumnTracker(this);
} catch (UnsatisfiedLinkError | InternalError e) {
LOG.atWarn().log("Failed to create AutoSizeColumnTracker, possibly due to fonts not being installed in your OS", e);
} catch (UnsatisfiedLinkError | NoClassDefFoundError | InternalError |
// thrown when no fonts are available in the workbook
IndexOutOfBoundsException e) {
// only handle special NoClassDefFound
if (!e.getMessage().contains("X11FontManager")) {
throw e;
}
LOG.atWarn()
.withThrowable(e)
.log("Failed to create AutoSizeColumnTracker, possibly due to fonts not being installed in your OS");
}
}
@ -99,9 +107,21 @@ public class SXSSFSheet implements Sheet, OoxmlSheetExtensions {
} catch (UnsatisfiedLinkError | NoClassDefFoundError | InternalError |
// thrown when no fonts are available in the workbook
IndexOutOfBoundsException e) {
// only handle special NoClassDefFound
if (!e.getMessage().contains("X11FontManager")) {
// close temporary resources when throwing exception in the constructor
_writer.close();
throw e;
}
LOG.atWarn()
.withThrowable(e)
.log("Failed to create AutoSizeColumnTracker, possibly due to fonts not being installed in your OS");
} catch (Throwable e) {
// close temporary resources when throwing exception in the constructor
_writer.close();
throw e;
}
}