-
Notifications
You must be signed in to change notification settings - Fork 56
Description
Hello,
We're presented with the following stack trace in a Spring Boot web application :
Caused by: java.lang.ArrayIndexOutOfBoundsException: arraycopy: last source index 106 out of bounds for byte[98] at java.base/java.lang.AbstractStringBuilder.shift(AbstractStringBuilder.java:1078) at java.base/java.lang.AbstractStringBuilder.delete(AbstractStringBuilder.java:920) at java.base/java.lang.StringBuilder.delete(StringBuilder.java:289) at org.odftoolkit.odfdom.pkg.OdfName.createExpandedName(OdfName.java:122) at org.odftoolkit.odfdom.pkg.OdfName.getOdfName(OdfName.java:102) at org.odftoolkit.odfdom.pkg.OdfName.createName(OdfName.java:95) at org.odftoolkit.odfdom.pkg.OdfName.newName(OdfName.java:86) at org.odftoolkit.odfdom.pkg.OdfFileDom.createElementNS(OdfFileDom.java:298) at org.odftoolkit.odfdom.pkg.OdfFileSaxHandler.startElement(OdfFileSaxHandler.java:88) at org.odftoolkit.odfdom.pkg.rdfa.MultiContentHandler.startElement(MultiContentHandler.java:76) at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.odftoolkit.odfdom.pkg.OdfFileDom.initialize(OdfFileDom.java:236) at org.odftoolkit.odfdom.pkg.OdfFileDom.initialize(OdfFileDom.java:212) at org.odftoolkit.odfdom.pkg.manifest.OdfManifestDom.initialize(OdfManifestDom.java:73) at org.odftoolkit.odfdom.pkg.OdfFileDom.<init>(OdfFileDom.java:132) at org.odftoolkit.odfdom.pkg.manifest.OdfManifestDom.<init>(OdfManifestDom.java:64) at org.odftoolkit.odfdom.pkg.OdfFileDom.newFileDom(OdfFileDom.java:194) at org.odftoolkit.odfdom.pkg.OdfPackage.parseManifest(OdfPackage.java:1313) at org.odftoolkit.odfdom.pkg.OdfPackage.readZip(OdfPackage.java:549) at org.odftoolkit.odfdom.pkg.OdfPackage.initializeZip(OdfPackage.java:519) at org.odftoolkit.odfdom.pkg.OdfPackage.<init>(OdfPackage.java:328) at org.odftoolkit.odfdom.pkg.OdfPackage.loadPackage(OdfPackage.java:399) at org.odftoolkit.simple.Document.loadDocument(Document.java:286) at org.odftoolkit.simple.TextDocument.loadDocument(TextDocument.java:243) ... 158 common frames omitted
Is it possible that the following static StringBuilder "mSB" in class "org.odftoolkit.odfdom.pkg.OdfName" got corrupted by multi-threaded accesses ?
public class OdfName implements Comparable {
private OdfNamespace mNS;
private String mLocalName;
private String mExpandedName; // i.e. {nsURI}localName
private static HashMap<String, OdfName> mOdfNames = new HashMap<String, OdfName>();
private static StringBuilder mSB; <------------
The change seems to have been introduced in version 0.10.0, as part of the following ticket https://github.com/tdf/odftoolkit/issues/70
Thank you for your help