From 35bd733289daaa5c4ca4b3049ff94a9c8e41540a Mon Sep 17 00:00:00 2001 From: apriestman <apriestman@basistech.com> Date: Tue, 4 Aug 2020 12:32:36 -0400 Subject: [PATCH] Explicitly close prepared statements. Rename JniDbHelper class. --- .../src/org/sleuthkit/datamodel/SleuthkitCase.java | 6 ++++++ .../java/src/org/sleuthkit/datamodel/SleuthkitJNI.java | 10 +++++----- .../{JniDbHelper.java => TskCaseDbBridge.java} | 6 +++--- 3 files changed, 14 insertions(+), 8 deletions(-) rename bindings/java/src/org/sleuthkit/datamodel/{JniDbHelper.java => TskCaseDbBridge.java} (99%) diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java index 0f8fb7c88..42060e51a 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java @@ -11699,6 +11699,12 @@ void executeUpdate(PreparedStatement statement) throws SQLException { @Override public void close() { try { + for (PreparedStatement stmt:preparedStatements.values()) { + closeStatement(stmt); + } + for (PreparedStatement stmt:adHocPreparedStatements.values()) { + closeStatement(stmt); + } connection.close(); } catch (SQLException ex) { logger.log(Level.SEVERE, "Unable to close connection to case database", ex); diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java index 608123381..fbdec24d6 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java @@ -439,7 +439,7 @@ void free() throws TskCoreException { * case database. */ long addImageInfo(long deviceObjId, List<String> imageFilePaths, String timeZone, SleuthkitCase skCase) throws TskCoreException { - JniDbHelper dbHelper = new JniDbHelper(skCase, new DefaultAddDataSourceCallbacks()); + TskCaseDbBridge dbHelper = new TskCaseDbBridge(skCase, new DefaultAddDataSourceCallbacks()); try { long tskAutoDbPointer = initializeAddImgNat(dbHelper, timezoneLongToShort(timeZone), false, false, false); runOpenAndAddImgNat(tskAutoDbPointer, UUID.randomUUID().toString(), imageFilePaths.toArray(new String[0]), imageFilePaths.size(), timeZone); @@ -486,7 +486,7 @@ public class AddImageProcess { private long imageId = 0; private boolean isCanceled; private final SleuthkitCase skCase; - private JniDbHelper dbHelper; + private TskCaseDbBridge dbHelper; /** * Constructs an object that encapsulates a multi-step process to @@ -552,7 +552,7 @@ public void run(String deviceId, String[] imageFilePaths, int sectorSize) throws */ public void run(String deviceId, Image image, int sectorSize, AddDataSourceCallbacks addDataSourceCallbacks) throws TskCoreException, TskDataException { - dbHelper = new JniDbHelper(skCase, addDataSourceCallbacks); + dbHelper = new TskCaseDbBridge(skCase, addDataSourceCallbacks); getTSKReadLock(); try { long imageHandle = 0; @@ -2096,9 +2096,9 @@ public static long openFile(long fsHandle, long fileId, TSK_FS_ATTR_TYPE_ENUM at private static native HashHitInfo hashDbLookupVerbose(String hash, int dbHandle) throws TskCoreException; - private static native long initAddImgNat(JniDbHelper dbHelperObj, String timezone, boolean addUnallocSpace, boolean skipFatFsOrphans) throws TskCoreException; + private static native long initAddImgNat(TskCaseDbBridge dbHelperObj, String timezone, boolean addUnallocSpace, boolean skipFatFsOrphans) throws TskCoreException; - private static native long initializeAddImgNat(JniDbHelper dbHelperObj, String timezone, boolean addFileSystems, boolean addUnallocSpace, boolean skipFatFsOrphans) throws TskCoreException; + private static native long initializeAddImgNat(TskCaseDbBridge dbHelperObj, String timezone, boolean addFileSystems, boolean addUnallocSpace, boolean skipFatFsOrphans) throws TskCoreException; private static native void runOpenAndAddImgNat(long process, String deviceId, String[] imgPath, int splits, String timezone) throws TskCoreException, TskDataException; diff --git a/bindings/java/src/org/sleuthkit/datamodel/JniDbHelper.java b/bindings/java/src/org/sleuthkit/datamodel/TskCaseDbBridge.java similarity index 99% rename from bindings/java/src/org/sleuthkit/datamodel/JniDbHelper.java rename to bindings/java/src/org/sleuthkit/datamodel/TskCaseDbBridge.java index 1b700b77d..6fcf0a38f 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/JniDbHelper.java +++ b/bindings/java/src/org/sleuthkit/datamodel/TskCaseDbBridge.java @@ -43,9 +43,9 @@ * Note that this code should only be used for the add image process, and not * to add additional files afterward. */ -class JniDbHelper { +class TskCaseDbBridge { - private static final Logger logger = Logger.getLogger(JniDbHelper.class.getName()); + private static final Logger logger = Logger.getLogger(TskCaseDbBridge.class.getName()); private final SleuthkitCase caseDb; private CaseDbTransaction trans = null; @@ -60,7 +60,7 @@ class JniDbHelper { private final Queue<LayoutRangeInfo> batchedLayoutRanges = new LinkedList<>(); private final List<Long> layoutFileIds = new ArrayList<>(); - JniDbHelper(SleuthkitCase caseDb, AddDataSourceCallbacks addDataSourceCallbacks) { + TskCaseDbBridge(SleuthkitCase caseDb, AddDataSourceCallbacks addDataSourceCallbacks) { this.caseDb = caseDb; this.addDataSourceCallbacks = addDataSourceCallbacks; trans = null; -- GitLab