diff --git a/bindings/java/src/org/sleuthkit/datamodel/AbstractFile.java b/bindings/java/src/org/sleuthkit/datamodel/AbstractFile.java index 5f3bde6d9dc6cc74a4c1a34d47de0b440a598383..e18c133e9cf47aaa87c3844b7043fa61f204afa3 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/AbstractFile.java +++ b/bindings/java/src/org/sleuthkit/datamodel/AbstractFile.java @@ -651,7 +651,9 @@ public static String createNonUniquePath(String uniquePath) { // name, if they exist). StringBuilder strbuf = new StringBuilder(); for (; index < pathSegments.length; ++index) { - strbuf.append("/").append(pathSegments[index]); + if (!pathSegments[index].isEmpty()) { + strbuf.append("/").append(pathSegments[index]); + } } return strbuf.toString(); diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java index bed958fcab04dc417017bc3e57b9d65593ea6d78..afe57e1024a41788e19386b2c24e566724159d5d 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java @@ -5750,7 +5750,17 @@ public Report addReport(String localPath, String sourceModuleName, String report // or one of its subdirectories. String relativePath = ""; //NON-NLS try { - relativePath = new File(getDbDirPath()).toURI().relativize(new File(localPath).toURI()).getPath(); + /* + * Note: The following call to .relativize() may be dangerous in + * case-sensitive operating systems and should be looked at. For + * now, we are simply relativizing the paths as all lower case, then + * using the length of the result to pull out the appropriate number + * of characters from the localPath String. + */ + String casePathLower = getDbDirPath().toLowerCase(); + String localPathLower = localPath.toLowerCase(); + int length = new File(casePathLower).toURI().relativize(new File(localPathLower).toURI()).getPath().length(); + relativePath = new File(localPath.substring(localPathLower.length() - length)).getPath(); } catch (IllegalArgumentException ex) { String errorMessage = String.format("Local path %s not in the database directory or one of its subdirectories", localPath); throw new TskCoreException(errorMessage, ex);