From 5dbbf643a41c1890a402e826748567cf1ef32a6b Mon Sep 17 00:00:00 2001 From: Jeremy Long Date: Mon, 20 Jan 2014 12:48:47 -0500 Subject: [PATCH] ensured subdirectories are built while extracting tar files - issue #43 Former-commit-id: 0335a6232c15c044a627ac0d23c37ad6fd8a9d07 --- .../owasp/dependencycheck/analyzer/ArchiveAnalyzer.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.java b/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.java index 5485a181a..c9d14b33d 100644 --- a/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.java +++ b/dependency-check-core/src/main/java/org/owasp/dependencycheck/analyzer/ArchiveAnalyzer.java @@ -295,7 +295,7 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer { final File d = new File(destination, entry.getName()); if (!d.exists()) { if (!d.mkdirs()) { - final String msg = String.format("Unable to create '%s'.", d.getAbsolutePath()); + final String msg = String.format("Unable to create directory '%s'.", d.getAbsolutePath()); throw new AnalysisException(msg); } } @@ -306,6 +306,13 @@ public class ArchiveAnalyzer extends AbstractAnalyzer implements Analyzer { BufferedOutputStream bos = null; FileOutputStream fos; try { + File parent = file.getParentFile(); + if (!parent.isDirectory()) { + if (!parent.mkdirs()) { + final String msg = String.format("Unable to build directory '%s'.", parent.getAbsolutePath()); + throw new AnalysisException(msg); + } + } fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos, BUFFER_SIZE); int count;