From 418bc221ead8e1a78b6e1c59e8d5e3ec66751e5e Mon Sep 17 00:00:00 2001
From: Ann Priestman <apriestman@basistech.com>
Date: Tue, 7 Feb 2017 11:25:02 -0500
Subject: [PATCH] Move where the image handle gets stored to the tskAuto
 object. Move startAddImage out of win32 only block

---
 bindings/java/jni/dataModel_SleuthkitJNI.cpp | 5 ++---
 tsk/auto/auto_db.cpp                         | 5 +++--
 tsk/auto/tsk_case_db.h                       | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.cpp b/bindings/java/jni/dataModel_SleuthkitJNI.cpp
index 76694d185..18dd6b56e 100644
--- a/bindings/java/jni/dataModel_SleuthkitJNI.cpp
+++ b/bindings/java/jni/dataModel_SleuthkitJNI.cpp
@@ -1166,13 +1166,12 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_runAddImgNat(JNIEnv * env,
         env->ReleaseStringUTFChars(timeZone, time_zone);
     }
 
-    // Save the image handle to the TskAutoDb object
+    // Set up the TSK_IMG_INFO object
     TSK_IMG_INFO *img_info = castImgInfo(env, a_img_info);
-    tskAuto->openImageHandle(img_info);
 
     // Add the data source.
     uint8_t ret = 0;
-    if ((ret = tskAuto->startAddImage(device_id)) != 0) {
+    if ((ret = tskAuto->startAddImage(img_info, device_id)) != 0) {
         stringstream msgss;
         msgss << "Errors occured while ingesting image " << std::endl;
         vector<TskAuto::error_record> errors = tskAuto->getErrorList();
diff --git a/tsk/auto/auto_db.cpp b/tsk/auto/auto_db.cpp
index 7d45c874d..69dae0392 100644
--- a/tsk/auto/auto_db.cpp
+++ b/tsk/auto/auto_db.cpp
@@ -477,14 +477,15 @@ uint8_t
 * Start the process to add image/file metadata to database inside of a transaction.
 * User must call either commitAddImage() to commit the changes,
 * or revertAddImage() to revert them.
-* This version of startAddImage assumes that m_img_info has already been set up.
 *
+* @param img_info Previously initialized TSK_IMG_INFO object
 * @param deviceId An ASCII-printable identifier for the device associated with the data source that is intended to be unique across multiple cases (e.g., a UUID)
 * @return 0 for success, 1 for failure
 */
 uint8_t
-TskAutoDb::startAddImage(const char* deviceId)
+TskAutoDb::startAddImage(TSK_IMG_INFO * img_info, const char* deviceId)
 {
+    openImageHandle(img_info);
 
     if (m_img_info == NULL) {
         return 1;
diff --git a/tsk/auto/tsk_case_db.h b/tsk/auto/tsk_case_db.h
index 86e3cc91e..2a0f383d8 100644
--- a/tsk/auto/tsk_case_db.h
+++ b/tsk/auto/tsk_case_db.h
@@ -101,8 +101,8 @@ class TskAutoDb:public TskAuto {
      */
     uint8_t startAddImage(int numImg, const TSK_TCHAR * const imagePaths[],
         TSK_IMG_TYPE_ENUM imgType, unsigned int sSize, const char* deviceId = NULL);
+    uint8_t startAddImage(TSK_IMG_INFO * img_info, const char* deviceId = NULL);
 #ifdef WIN32
-    uint8_t startAddImage(const char* deviceId = NULL);
     uint8_t startAddImage(int numImg, const char *const imagePaths[],
         TSK_IMG_TYPE_ENUM imgType, unsigned int sSize, const char* deviceId = NULL);
 #endif
-- 
GitLab