diff --git a/src/main/java/org/owasp/dependencycheck/data/cpe/Index.java b/src/main/java/org/owasp/dependencycheck/data/cpe/Index.java index b3c3d9254..20b9b1c69 100644 --- a/src/main/java/org/owasp/dependencycheck/data/cpe/Index.java +++ b/src/main/java/org/owasp/dependencycheck/data/cpe/Index.java @@ -70,14 +70,7 @@ public class Index extends AbstractIndex { */ public File getDataDirectory() throws IOException { final String fileName = Settings.getString(Settings.KEYS.CPE_INDEX); - File exePath = FileUtils.getDataDirectory(fileName, Index.class); - if (exePath.getName().toLowerCase().endsWith(".jar")) { - exePath = exePath.getParentFile(); - } else { - exePath = new File("."); - } - File path = new File(exePath.getCanonicalFile() + File.separator + fileName); - path = new File(path.getCanonicalPath()); + File path = FileUtils.getDataDirectory(fileName, Index.class); if (!path.exists()) { if (!path.mkdirs()) { throw new IOException("Unable to create CPE Data directory"); diff --git a/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java b/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java index d6e91fcb2..cd517f91c 100644 --- a/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java +++ b/src/main/java/org/owasp/dependencycheck/data/nvdcve/CveDB.java @@ -408,16 +408,7 @@ public class CveDB { */ public static File getDataDirectory() throws IOException { final String fileName = Settings.getString(Settings.KEYS.CVE_INDEX); - File exePath = FileUtils.getDataDirectory(fileName, CveDB.class); - - if (exePath.getName().toLowerCase().endsWith(".jar")) { - exePath = exePath.getParentFile(); - } else { - exePath = new File("."); - } - File path = new File(exePath.getCanonicalFile() + File.separator + fileName); - path = new File(path.getCanonicalPath()); - + File path = FileUtils.getDataDirectory(fileName, CveDB.class); if (!path.exists()) { if (!path.mkdirs()) { throw new IOException("Unable to create NVD CVE Data directory"); diff --git a/src/main/java/org/owasp/dependencycheck/utils/FileUtils.java b/src/main/java/org/owasp/dependencycheck/utils/FileUtils.java index 9cc82b4a2..1949b8d83 100644 --- a/src/main/java/org/owasp/dependencycheck/utils/FileUtils.java +++ b/src/main/java/org/owasp/dependencycheck/utils/FileUtils.java @@ -83,10 +83,18 @@ public final class FileUtils { public static File getDataDirectory(String configuredFilePath, Class clazz) throws IOException { File file = new File(configuredFilePath); if (file.exists() && file.isDirectory() && file.canWrite()) { - return file; + return new File(file.getCanonicalPath()); } else { - String filePath = clazz.getProtectionDomain().getCodeSource().getLocation().getPath(); - return new File(URLDecoder.decode(filePath, "UTF-8")); + final String filePath = clazz.getProtectionDomain().getCodeSource().getLocation().getPath(); + final String decodedPath = URLDecoder.decode(filePath, "UTF-8"); + File exePath = new File(decodedPath); + if (exePath.getName().toLowerCase().endsWith(".jar")) { + exePath = exePath.getParentFile(); + } else { + exePath = new File("."); + } + File path = new File(exePath.getCanonicalFile() + File.separator + configuredFilePath); + return new File(path.getCanonicalPath()); } } diff --git a/src/test/java/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.java b/src/test/java/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.java index 475d1287b..a61e11ebd 100644 --- a/src/test/java/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.java +++ b/src/test/java/org/owasp/dependencycheck/data/cpe/BaseIndexTestCase.java @@ -58,15 +58,7 @@ public abstract class BaseIndexTestCase { protected static File getDataDirectory() throws IOException { String fileName = Settings.getString(Settings.KEYS.CPE_INDEX); - File exePath = FileUtils.getDataDirectory(fileName, Index.class); - if (exePath.getName().toLowerCase().endsWith(".jar")) { - exePath = exePath.getParentFile(); - } else { - exePath = new File("."); - } - File path = new File(exePath.getCanonicalFile() + File.separator + fileName); - path = new File(path.getCanonicalPath()); - return path; + return FileUtils.getDataDirectory(fileName, Index.class); } public static void ensureIndexExists() throws Exception { diff --git a/src/test/java/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.java b/src/test/java/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.java index f80681551..2c579de86 100644 --- a/src/test/java/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.java +++ b/src/test/java/org/owasp/dependencycheck/data/nvdcve/BaseDBTestCase.java @@ -49,15 +49,7 @@ public abstract class BaseDBTestCase extends TestCase { protected static File getDataDirectory() throws IOException { String fileName = Settings.getString(Settings.KEYS.CVE_INDEX); - File exePath = FileUtils.getDataDirectory(fileName, Index.class); - if (exePath.getName().toLowerCase().endsWith(".jar")) { - exePath = exePath.getParentFile(); - } else { - exePath = new File("."); - } - File path = new File(exePath.getCanonicalFile() + File.separator + fileName); - path = new File(path.getCanonicalPath()); - return path; + return FileUtils.getDataDirectory(fileName, Index.class); } public static void ensureDBExists() throws Exception {