From 1542fd03874b4edf71c6e53d710d70028a702a86 Mon Sep 17 00:00:00 2001 From: Aleksey <30636242+azotzot@users.noreply.github.com> Date: Mon, 8 Jul 2024 13:27:28 +0300 Subject: [PATCH] Fix: add missing stream closing on manifest disassemble (#3634) * add missing stream closing * replace custom close with apache --- .../main/java/brut/androlib/res/ResourcesDecoder.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java index 7ee7f77e..f74f6a93 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/ResourcesDecoder.java @@ -28,6 +28,7 @@ import brut.androlib.res.xml.ResXmlPatcher; import brut.directory.Directory; import brut.directory.DirectoryException; import brut.directory.FileDirectory; +import org.apache.commons.io.IOUtils; import org.xmlpull.v1.XmlSerializer; import java.io.*; @@ -77,6 +78,8 @@ public class ResourcesDecoder { XmlPullStreamDecoder fileDecoder = new XmlPullStreamDecoder(axmlParser, getResXmlSerializer()); Directory inApk, out; + InputStream inputStream = null; + OutputStream outputStream = null; try { inApk = mApkInfo.getApkFile().getDirectory(); out = new FileDirectory(outDir); @@ -86,12 +89,15 @@ public class ResourcesDecoder { } else { LOGGER.info("Decoding AndroidManifest.xml with only framework resources..."); } - InputStream inputStream = inApk.getFileInput("AndroidManifest.xml"); - OutputStream outputStream = out.getFileOutput("AndroidManifest.xml"); + inputStream = inApk.getFileInput("AndroidManifest.xml"); + outputStream = out.getFileOutput("AndroidManifest.xml"); fileDecoder.decodeManifest(inputStream, outputStream); } catch (DirectoryException ex) { throw new AndrolibException(ex); + } finally { + IOUtils.closeQuietly(inputStream); + IOUtils.closeQuietly(outputStream); } if (mApkInfo.hasResources()) {