Author: cziegeler
Date: Mon Feb 20 07:47:57 2017
New Revision: 1783718
URL: http://svn.apache.org/viewvc?rev=1783718&view=rev
Log:
FELIX-5540 : DataModelHelperImpl leaks Zip Streams / native Memory. Apply patch
from Fabian Lange
Modified:
felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/DataModelHelperImpl.java
Modified:
felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/DataModelHelperImpl.java
URL:
http://svn.apache.org/viewvc/felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/DataModelHelperImpl.java?rev=1783718&r1=1783717&r2=1783718&view=diff
==============================================================================
---
felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/DataModelHelperImpl.java
(original)
+++
felix/trunk/bundlerepository/src/main/java/org/apache/felix/bundlerepository/impl/DataModelHelperImpl.java
Mon Feb 20 07:47:57 2017
@@ -108,10 +108,22 @@ public class DataModelHelperImpl impleme
}
entry = zin.getNextEntry();
}
+ // as the ZipInputStream is not used further it would not be
closed.
+ if (is == null)
+ {
+ try
+ {
+ zin.close();
+ }
+ catch (IOException ex)
+ {
+ // Not much we can do.
+ }
+ }
}
else if (url.getPath().endsWith(".gz"))
{
- is = new GZIPInputStream(FileUtil.openURL(url));
+ is = new GZIPInputStream(FileUtil.openURL(url));
}
else
{
@@ -454,18 +466,17 @@ public class DataModelHelperImpl impleme
}
private byte[] loadEntry(String name) throws IOException
{
- InputStream is = FileUtil.openURL(bundleUrl);
+ ZipInputStream zis = new
ZipInputStream(FileUtil.openURL(bundleUrl));
try
{
- ZipInputStream jis = new ZipInputStream(is);
- for (ZipEntry e = jis.getNextEntry(); e != null; e =
jis.getNextEntry())
+ for (ZipEntry e = zis.getNextEntry(); e != null; e =
zis.getNextEntry())
{
if (name.equalsIgnoreCase(e.getName()))
{
ByteArrayOutputStream baos = new
ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n;
- while ((n = jis.read(buf, 0, buf.length)) > 0)
+ while ((n = zis.read(buf, 0, buf.length)) > 0)
{
baos.write(buf, 0, n);
}
@@ -475,7 +486,7 @@ public class DataModelHelperImpl impleme
}
finally
{
- is.close();
+ zis.close();
}
return null;
}