From 7919d050e8c17e8bb5160f04813aec648c78e870 Mon Sep 17 00:00:00 2001
From: Greg DiCristofaro <gregd@basistech.com>
Date: Wed, 20 Sep 2023 16:21:20 -0400
Subject: [PATCH] read no bytes when image path is missing

---
 bindings/java/src/org/sleuthkit/datamodel/FileSystem.java | 5 +++++
 bindings/java/src/org/sleuthkit/datamodel/FsContent.java  | 6 ++++++
 2 files changed, 11 insertions(+)

diff --git a/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java b/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
index 45a21b58e..8dc7dc646 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
@@ -19,6 +19,7 @@
 package org.sleuthkit.datamodel;
 
 import java.util.List;
+import org.apache.commons.lang3.ArrayUtils;
 
 /**
  * Represents a file system object stored in tsk_fs_info table FileSystem has a
@@ -69,6 +70,10 @@ public void close() {
 
 	@Override
 	public int read(byte[] buf, long offset, long len) throws TskCoreException {
+		Content dataSource = getDataSource();
+		if (dataSource instanceof Image && ArrayUtils.isEmpty(((Image) dataSource).getPaths())) {
+			return 0;
+		}
 		return SleuthkitJNI.readFs(getFileSystemHandle(), buf, offset, len);
 	}
 
diff --git a/bindings/java/src/org/sleuthkit/datamodel/FsContent.java b/bindings/java/src/org/sleuthkit/datamodel/FsContent.java
index 486075154..43b1f5d02 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/FsContent.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/FsContent.java
@@ -183,6 +183,12 @@ protected synchronized int readInt(byte[] buf, long offset, long len) throws Tsk
 			//special case for 0-size file
 			return 0;
 		}
+		
+		Content dataSource = getDataSource();
+		if (dataSource instanceof Image && ((Image) dataSource).getPaths() == null || ((Image) dataSource).getPaths().length == 0) {
+			return 0;
+		}
+		
 		loadFileHandle();
 		return SleuthkitJNI.readFile(fileHandle, buf, offset, len);
 	}
-- 
GitLab