You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/12/18 18:04:53 UTC
svn commit: r1896140 - in /poi/trunk/poi-ooxml/src/main/java/org/apache/poi: ooxml/POIXMLDocumentPart.java openxml4j/opc/ZipPackage.java poifs/crypt/temp/AesZipFileZipEntrySource.java
Author: fanningpj
Date: Sat Dec 18 18:04:52 2021
New Revision: 1896140
URL: http://svn.apache.org/viewvc?rev=1896140&view=rev
Log:
try to close resources when RuntimeExceptions happen
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLDocumentPart.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/AesZipFileZipEntrySource.java
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLDocumentPart.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLDocumentPart.java?rev=1896140&r1=1896139&r2=1896140&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLDocumentPart.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/POIXMLDocumentPart.java Sat Dec 18 18:04:52 2021
@@ -739,24 +739,31 @@ public class POIXMLDocumentPart {
* Since POI 4.1.2 - pkg is closed if this method throws an exception
*/
private static PackagePart getPartFromOPCPackage(OPCPackage pkg, String coreDocumentRel) {
- PackageRelationship coreRel = pkg.getRelationshipsByType(coreDocumentRel).getRelationship(0);
+ try {
+ PackageRelationship coreRel = pkg.getRelationshipsByType(coreDocumentRel).getRelationship(0);
- if (coreRel != null) {
- PackagePart pp = pkg.getPart(coreRel);
- if (pp == null) {
+ if (coreRel != null) {
+ PackagePart pp = pkg.getPart(coreRel);
+ if (pp == null) {
+ IOUtils.closeQuietly(pkg);
+ throw new POIXMLException("OOXML file structure broken/invalid - core document '" + coreRel.getTargetURI() + "' not found.");
+ }
+ return pp;
+ }
+
+ coreRel = pkg.getRelationshipsByType(PackageRelationshipTypes.STRICT_CORE_DOCUMENT).getRelationship(0);
+ if (coreRel != null) {
IOUtils.closeQuietly(pkg);
- throw new POIXMLException("OOXML file structure broken/invalid - core document '" + coreRel.getTargetURI() + "' not found.");
+ throw new POIXMLException("Strict OOXML isn't currently supported, please see bug #57699");
}
- return pp;
- }
- coreRel = pkg.getRelationshipsByType(PackageRelationshipTypes.STRICT_CORE_DOCUMENT).getRelationship(0);
- if (coreRel != null) {
IOUtils.closeQuietly(pkg);
- throw new POIXMLException("Strict OOXML isn't currently supported, please see bug #57699");
+ throw new POIXMLException("OOXML file structure broken/invalid - no core document found!");
+ } catch (POIXMLException e) {
+ throw e;
+ } catch (RuntimeException e) {
+ IOUtils.closeQuietly(pkg);
+ throw new POIXMLException("OOXML file structure broken/invalid", e);
}
-
- IOUtils.closeQuietly(pkg);
- throw new POIXMLException("OOXML file structure broken/invalid - no core document found!");
}
}
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java?rev=1896140&r1=1896139&r2=1896140&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/openxml4j/opc/ZipPackage.java Sat Dec 18 18:04:52 2021
@@ -130,7 +130,7 @@ public final class ZipPackage extends OP
ZipArchiveThresholdInputStream zis = ZipHelper.openZipStream(in); // NOSONAR
try {
this.zipArchive = new ZipInputStreamZipEntrySource(zis);
- } catch (final IOException e) {
+ } catch (final IOException | RuntimeException e) {
IOUtils.closeQuietly(zis);
throw e;
}
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/AesZipFileZipEntrySource.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/AesZipFileZipEntrySource.java?rev=1896140&r1=1896139&r2=1896140&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/AesZipFileZipEntrySource.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/temp/AesZipFileZipEntrySource.java Sat Dec 18 18:04:52 2021
@@ -105,14 +105,17 @@ public final class AesZipFileZipEntrySou
}
public static AesZipFileZipEntrySource createZipEntrySource(InputStream is) throws IOException {
- // generate session key
- byte[] ivBytes = new byte[16], keyBytes = new byte[16];
- RandomSingleton.getInstance().nextBytes(ivBytes);
- RandomSingleton.getInstance().nextBytes(keyBytes);
- final File tmpFile = TempFile.createTempFile("protectedXlsx", ".zip");
- copyToFile(is, tmpFile, keyBytes, ivBytes);
- IOUtils.closeQuietly(is);
- return fileToSource(tmpFile, keyBytes, ivBytes);
+ try {
+ // generate session key
+ byte[] ivBytes = new byte[16], keyBytes = new byte[16];
+ RandomSingleton.getInstance().nextBytes(ivBytes);
+ RandomSingleton.getInstance().nextBytes(keyBytes);
+ final File tmpFile = TempFile.createTempFile("protectedXlsx", ".zip");
+ copyToFile(is, tmpFile, keyBytes, ivBytes);
+ return fileToSource(tmpFile, keyBytes, ivBytes);
+ } finally {
+ IOUtils.closeQuietly(is);
+ }
}
private static void copyToFile(InputStream is, File tmpFile, byte[] keyBytes, byte[] ivBytes) throws IOException {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org