From dd2f43dcdec5fa2e564851afbbed54a3d21e3197 Mon Sep 17 00:00:00 2001 From: Greg Leach Date: Thu, 26 Mar 2015 19:47:38 +0100 Subject: [PATCH] Make sure to close streams when done with them. https://github.com/simtel12/zip-signer/commit/488f8cd3b466e2da2d9dc96dafaeef1d67e005f7 closes #1383 --- .../security/zipsigner/ZipSigner.java | 20 ++++++++++++------- .../main/java/kellinwood/zipio/ZipInput.java | 6 +++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/kellinwood/security/zipsigner/ZipSigner.java b/app/src/main/java/kellinwood/security/zipsigner/ZipSigner.java index 8bc9aea5c..a572b72e5 100644 --- a/app/src/main/java/kellinwood/security/zipsigner/ZipSigner.java +++ b/app/src/main/java/kellinwood/security/zipsigner/ZipSigner.java @@ -378,10 +378,8 @@ public class ZipSigner Manifest input = null; ZioEntry manifestEntry = entries.get(JarFile.MANIFEST_NAME); if (manifestEntry != null) { - InputStream is = manifestEntry.getInputStream(); input = new Manifest(); - input.read(is); - is.close(); + input.read( manifestEntry.getInputStream()); } Manifest output = new Manifest(); Attributes main = output.getMainAttributes(); @@ -645,9 +643,17 @@ public class ZipSigner progressHelper.initProgress(); progressHelper.progress( ProgressEvent.PRORITY_IMPORTANT, resourceAdapter.getString(ResourceAdapter.Item.PARSING_CENTRAL_DIRECTORY)); - ZipInput input = ZipInput.read( inputZipFilename); - signZip( input.getEntries(), new FileOutputStream( outputZipFilename), outputZipFilename); - input.close(); + ZipInput input = null; + OutputStream outStream = null; + try { + input = ZipInput.read( inputZipFilename); + outStream = new FileOutputStream( outputZipFilename); + signZip(input.getEntries(), outStream, outputZipFilename); + } + finally { + if(input != null) input.close(); + if(outStream != null) outStream.close(); + } } /** Sign the @@ -750,7 +756,7 @@ public class ZipSigner } finally { - zipOutput.close(); + if (zipOutput != null) zipOutput.close(); if (canceled) { try { if (outputZipFilename != null) new File( outputZipFilename).delete(); diff --git a/app/src/main/java/kellinwood/zipio/ZipInput.java b/app/src/main/java/kellinwood/zipio/ZipInput.java index 06c381db9..44e62e9dc 100644 --- a/app/src/main/java/kellinwood/zipio/ZipInput.java +++ b/app/src/main/java/kellinwood/zipio/ZipInput.java @@ -15,6 +15,7 @@ */ package kellinwood.zipio; +import java.io.Closeable; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; @@ -37,9 +38,8 @@ import kellinwood.logging.LoggerManager; /** * */ -public class ZipInput +public class ZipInput implements Closeable { - static LoggerInterface log; public String inputFilename; @@ -174,6 +174,7 @@ public class ZipInput } } + @Override public void close() { if (in != null) try { in.close(); } catch( Throwable t) {} } @@ -227,7 +228,6 @@ public class ZipInput public int read( byte[] b, int offset, int length) throws IOException { return in.read( b, offset, length); } - }