From a02734bba39ed3888470f1247b8fe6313ad543a5 Mon Sep 17 00:00:00 2001
From: apriestman <apriestman@basistech.com>
Date: Mon, 24 Feb 2020 09:39:53 -0500
Subject: [PATCH] Removed all database calls.

---
 bindings/java/jni/auto_db_java.cpp           | 357 ++++---------------
 bindings/java/jni/auto_db_java.h             |  23 +-
 bindings/java/jni/dataModel_SleuthkitJNI.cpp |  21 +-
 3 files changed, 92 insertions(+), 309 deletions(-)

diff --git a/bindings/java/jni/auto_db_java.cpp b/bindings/java/jni/auto_db_java.cpp
index 5aaeaa85e..8df2bd647 100644
--- a/bindings/java/jni/auto_db_java.cpp
+++ b/bindings/java/jni/auto_db_java.cpp
@@ -44,7 +44,6 @@ TskAutoDbJava::TskAutoDbJava()
     m_poolFound = false;
     m_stopped = false;
     m_foundStructure = false;
-    m_imgTransactionOpen = false;
     m_attributeAdded = false;
     m_addFileSystems = true;
     m_noFatFsOrphans = false;
@@ -104,6 +103,59 @@ addVolumeInfo(const TSK_VS_PART_INFO* vs_part,
     return 7;
 }
 
+int64_t
+addFsInfo(const TSK_FS_INFO* fs_info, int64_t parObjId,
+    int64_t& objId) {
+    printf("addFsInfo\n");
+    return 8;
+}
+
+int64_t
+addFsFile(TSK_FS_FILE* fs_file,
+    const TSK_FS_ATTR* fs_attr, const char* path,
+    const unsigned char*const md5, const TSK_DB_FILES_KNOWN_ENUM known,
+    int64_t fsObjId, int64_t& objId, int64_t dataSourceObjId) {
+
+    printf("addFsFile\n");
+    return 9;
+}
+
+int64_t
+addFileWithLayoutRange(const TSK_DB_FILES_TYPE_ENUM dbFileType, const int64_t parentObjId,
+    const int64_t fsObjId, const uint64_t size,
+    vector<TSK_DB_FILE_LAYOUT_RANGE>& ranges, int64_t& objId,
+    int64_t dataSourceObjId) {
+    printf("addFileWithLayoutRange\n");
+    return 10;
+}
+
+int64_t
+addUnallocBlockFile(const int64_t parentObjId, const int64_t fsObjId, const uint64_t size,
+    vector<TSK_DB_FILE_LAYOUT_RANGE>& ranges, int64_t& objId,
+    int64_t dataSourceObjId) {
+    printf("addUnallocBlockFile\n");
+    return addFileWithLayoutRange(TSK_DB_FILES_TYPE_UNALLOC_BLOCKS, parentObjId, fsObjId, size, ranges, objId,
+        dataSourceObjId);
+}
+
+int64_t
+addUnusedBlockFile(const int64_t parentObjId, const int64_t fsObjId, const uint64_t size,
+    vector<TSK_DB_FILE_LAYOUT_RANGE>& ranges, int64_t& objId,
+    int64_t dataSourceObjId) {
+    printf("addUnusedBlockFile\n");
+    return addFileWithLayoutRange(TSK_DB_FILES_TYPE_UNUSED_BLOCKS, parentObjId, fsObjId, size, ranges, objId,
+        dataSourceObjId);
+}
+
+
+
+int64_t
+addUnallocFsBlockFilesParent(const int64_t fsObjId, int64_t& objId,
+    int64_t dataSourceObjId) {
+    printf("addUnallocFsBlockfilesParent\n");
+    return 11;
+}
+
 
 
 ////////////////////////////////////////////////////////////////////////////
@@ -381,21 +433,21 @@ TskAutoDbJava::filterFs(TSK_FS_INFO * fs_info)
 
     if (m_poolFound) {
         // there's a pool
-        if (m_db->addFsInfo(fs_info, m_curPoolVol, m_curFsId)) {
+        if (-1 != addFsInfo(fs_info, m_curPoolVol, m_curFsId)) {
             registerError();
             return TSK_FILTER_STOP;
         }
     }
     else if (m_volFound && m_vsFound) {
         // there's a volume system and volume
-        if (m_db->addFsInfo(fs_info, m_curVolId, m_curFsId)) {
+        if (-1 != addFsInfo(fs_info, m_curVolId, m_curFsId)) {
             registerError();
             return TSK_FILTER_STOP;
         }
     }
     else {
         // file system doesn't live in a volume, use image as parent
-        if (m_db->addFsInfo(fs_info, m_curImgId, m_curFsId)) {
+        if (-1 != addFsInfo(fs_info, m_curImgId, m_curFsId)) {
             registerError();
             return TSK_FILTER_STOP;
         }
@@ -433,12 +485,10 @@ TskAutoDbJava::filterFs(TSK_FS_INFO * fs_info)
  */
 TSK_RETVAL_ENUM
     TskAutoDbJava::insertFileData(TSK_FS_FILE * fs_file,
-    const TSK_FS_ATTR * fs_attr, const char *path,
-    const unsigned char *const md5,
-    const TSK_DB_FILES_KNOWN_ENUM known)
+    const TSK_FS_ATTR * fs_attr, const char *path)
 {
 
-    if (m_db->addFsFile(fs_file, fs_attr, path, md5, known, m_curFsId, m_curFileId,
+    if (-1 == addFsFile(fs_file, fs_attr, path, NULL, TSK_DB_FILES_KNOWN_UNKNOWN, m_curFsId, m_curFileId,
             m_curImgId)) {
         registerError();
         return TSK_ERR;
@@ -455,13 +505,6 @@ TSK_RETVAL_ENUM
  */
 uint8_t TskAutoDbJava::addFilesInImgToDb()
 {
-    if (m_db == NULL || m_db->isDbOpen() == false) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("addFilesInImgToDb: m_db not open");
-        registerError();
-        return 1;
-    }
 
     // @@@ This seems bad because we are overriding what the user may
     // have set. We should remove the public API if we are going to 
@@ -518,34 +561,9 @@ uint8_t
     if (tsk_verbose)
         tsk_fprintf(stderr, "TskAutoDbJava::startAddImage: Starting add image process\n");
 
-    if (m_db->releaseSavepoint(TSK_ADD_IMAGE_SAVEPOINT) == 0) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("TskAutoDbJava::startAddImage(): An add-image savepoint already exists");
-        registerError();
-        return 1;
-    }
-
-    // @@@ This check is a bit paranoid, and may need to be removed in the future
-    if (m_db->inTransaction()) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("TskAutoDbJava::startAddImage(): Already in a transaction, image might not be committed");
-        registerError();
-        return 1;
-    }
-
-    if (m_db->createSavepoint(TSK_ADD_IMAGE_SAVEPOINT)) {
-        registerError();
-        return 1;
-    }
-
-    m_imgTransactionOpen = true;
     if (openImage(numImg, imagePaths, imgType, sSize, deviceId)) {
         tsk_error_set_errstr2("TskAutoDbJava::startAddImage");
         registerError();
-        if (revertAddImage())
-            registerError();
         return 1;
     }
 
@@ -581,34 +599,9 @@ TskAutoDbJava::startAddImage(TSK_IMG_INFO * img_info, const char* deviceId)
     if (tsk_verbose)
         tsk_fprintf(stderr, "TskAutoDbJava::startAddImage: Starting add image process\n");
 
-    if (m_db->releaseSavepoint(TSK_ADD_IMAGE_SAVEPOINT) == 0) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("TskAutoDbJava::startAddImage(): An add-image savepoint already exists");
-        registerError();
-        return 1;
-    }
-
-    // @@@ This check is a bit paranoid, and may need to be removed in the future
-    if (m_db->inTransaction()) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("TskAutoDbJava::startAddImage(): Already in a transaction, image might not be committed");
-        registerError();
-        return 1;
-    }
-
-    if (m_db->createSavepoint(TSK_ADD_IMAGE_SAVEPOINT)) {
-        registerError();
-        return 1;
-    }
-
-    m_imgTransactionOpen = true;
     if (openImage(deviceId)) {
         tsk_error_set_errstr2("TskAutoDbJava::startAddImage");
         registerError();
-        if (revertAddImage())
-            registerError();
         return 1;
     }
 
@@ -648,38 +641,10 @@ uint8_t
 {
     if (tsk_verbose) 
         tsk_fprintf(stderr, "TskAutoDbJava::startAddImage_utf8: Starting add image process\n");
-   
-
-    if (m_db->releaseSavepoint(TSK_ADD_IMAGE_SAVEPOINT) == 0) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("TskAutoDbJava::startAddImage(): An add-image savepoint already exists");
-        registerError();
-        return 1;
-    }
-
-    // @@@ This check is a bit paranoid, and may need to be removed in the future
-    if (m_db->inTransaction()) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("TskAutoDbJava::startAddImage(): Already in a transaction, image might not be committed");
-        registerError();
-        return 1;
-    }
-
-
-    if (m_db->createSavepoint(TSK_ADD_IMAGE_SAVEPOINT)) {
-        registerError();
-        return 1;
-    }
-
-    m_imgTransactionOpen = true;
 
     if (openImageUtf8(numImg, imagePaths, imgType, sSize, deviceId)) {
         tsk_error_set_errstr2("TskAutoDbJava::startAddImage");
         registerError();
-        if (revertAddImage())
-            registerError();
         return 1;
     }
     if (m_imageWriterEnabled) {
@@ -709,69 +674,6 @@ void
     // flag is checked every time processFile() is called
 }
 
-/**
- * Revert all changes after the startAddImage() process has run successfully.
- * @returns 1 on error (error was NOT registered in list), 0 on success
- */
-int
- TskAutoDbJava::revertAddImage()
-{
-    if (tsk_verbose)
-        tsk_fprintf(stderr, "TskAutoDbJava::revertAddImage: Reverting add image process\n");
-
-    if (m_imgTransactionOpen == false) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("revertAddImage(): transaction is already closed");
-        return 1;
-    }
-
-    int retval = m_db->revertSavepoint(TSK_ADD_IMAGE_SAVEPOINT);
-    if (retval == 0) {
-        if (m_db->inTransaction()) {
-            tsk_error_reset();
-            tsk_error_set_errno(TSK_ERR_AUTO_DB);
-            tsk_error_set_errstr("TskAutoDbJava::revertAddImage(): Image reverted, but still in a transaction.");
-            retval = 1;
-        }
-    }
-    m_imgTransactionOpen = false;
-    return retval;
-}
-
-/**
- * Finish the transaction after the startAddImage is finished.  
- * @returns Id of the image that was added or -1 on error (error was NOT registered in list)
- */
-int64_t
-TskAutoDbJava::commitAddImage()
-{
-    if (tsk_verbose)
-        tsk_fprintf(stderr, "TskAutoDbJava::commitAddImage: Committing add image process\n");
-
-    if (m_imgTransactionOpen == false) {
-        tsk_error_reset();
-        tsk_error_set_errno(TSK_ERR_AUTO_DB);
-        tsk_error_set_errstr("commitAddImage(): transaction is already closed");
-        return -1;
-    }
-
-    int retval = m_db->releaseSavepoint(TSK_ADD_IMAGE_SAVEPOINT);
-    m_imgTransactionOpen = false;
-    if (retval == 1) {
-        return -1;
-    } else {
-        if (m_db->inTransaction()) {
-            tsk_error_reset();
-            tsk_error_set_errno(TSK_ERR_AUTO_DB);
-            tsk_error_set_errstr("TskAutoDbJava::revertAddImage(): Image savepoint released, but still in a transaction.");
-            return -1;
-        }
-    }
-
-    return m_curImgId;
-}
-
 /**
  * Set the current image's timezone
  */
@@ -826,7 +728,7 @@ TskAutoDbJava::processFile(TSK_FS_FILE * fs_file, const char *path)
 
     // insert a general row if we didn't add a specific attribute one
     if ((retval == TSK_OK) && (m_attributeAdded == false)) {
-        retval = insertFileData(fs_file, NULL, path, NULL, TSK_DB_FILES_KNOWN_UNKNOWN);
+        retval = insertFileData(fs_file, NULL, path);
     }
     
     // reset the file id
@@ -847,120 +749,19 @@ TskAutoDbJava::processAttribute(TSK_FS_FILE * fs_file,
     // add the file metadata for the default attribute type
     if (isDefaultType(fs_file, fs_attr)) {
 
-        // calculate the MD5 hash if the attribute is a file
-        unsigned char hash[16];
-        unsigned char *md5 = NULL;
-        memset(hash, 0, 16);
-
-        TSK_DB_FILES_KNOWN_ENUM file_known = TSK_DB_FILES_KNOWN_UNKNOWN;
-
-        if (m_fileHashFlag && isFile(fs_file)) {
-            if (md5HashAttr(hash, fs_attr)) {
-                // error was registered
-                return TSK_OK;
-            }
-            md5 = hash;
-
-            if (m_NSRLDb != NULL) {
-                int8_t retval = tsk_hdb_lookup_raw(m_NSRLDb, hash, 16, TSK_HDB_FLAG_QUICK, NULL, NULL);
-                if (retval == -1) {
-                    registerError();
-                    return TSK_OK;
-                } 
-                else if (retval) {
-                    file_known = TSK_DB_FILES_KNOWN_KNOWN;
-                }
-            }
-
-            if (m_knownBadDb != NULL) {
-                int8_t retval = tsk_hdb_lookup_raw(m_knownBadDb, hash, 16, TSK_HDB_FLAG_QUICK, NULL, NULL);
-                if (retval == -1) {
-                    registerError();
-                    return TSK_OK;
-                } 
-                else if (retval) {
-                    file_known = TSK_DB_FILES_KNOWN_KNOWN_BAD;
-                }
-            }
-        }
-
-        if (insertFileData(fs_attr->fs_file, fs_attr, path, md5, file_known) == TSK_ERR) {
+        if (insertFileData(fs_attr->fs_file, fs_attr, path) == TSK_ERR) {
             registerError();
             return TSK_OK;
         }
         else {
             m_attributeAdded = true;
         }
-
-        // add the block map, if requested and the file is non-resident
-        if ((m_blkMapFlag) && (isNonResident(fs_attr))
-            && (isDotDir(fs_file) == 0)) {
-            TSK_FS_ATTR_RUN *run;
-            int sequence = 0;
-
-            for (run = fs_attr->nrd.run; run != NULL; run = run->next) {
-                unsigned int block_size = fs_file->fs_info->block_size;
-
-                // ignore sparse blocks
-                if (run->flags & TSK_FS_ATTR_RUN_FLAG_SPARSE)
-                    continue;
-
-                // @@@ We probably want to keep on going here
-                if (m_db->addFileLayoutRange(m_curFileId,
-                    run->addr * block_size, run->len * block_size, sequence++)) {
-                    registerError();
-                    return TSK_OK;
-                }
-            }
-        }
     }
 
     return TSK_OK;
 }
 
 
-/**
- * Helper for md5HashAttr
- */
-TSK_WALK_RET_ENUM
-TskAutoDbJava::md5HashCallback(TSK_FS_FILE * /*file*/, TSK_OFF_T /*offset*/,
-    TSK_DADDR_T /*addr*/, char *buf, size_t size,
-    TSK_FS_BLOCK_FLAG_ENUM /*a_flags*/, void *ptr)
-{
-    TSK_MD5_CTX *md = (TSK_MD5_CTX *) ptr;
-    if (md == NULL)
-        return TSK_WALK_CONT;
-
-    TSK_MD5_Update(md, (unsigned char *) buf, (unsigned int) size);
-
-    return TSK_WALK_CONT;
-}
-
-
-
-/**
- * MD5 hash an attribute and put the result in the given array
- * @param md5Hash array to write the hash to
- * @param fs_attr attribute to hash the data of
- * @return Returns 1 on error (message has been registered)
- */
-int
-TskAutoDbJava::md5HashAttr(unsigned char md5Hash[16], const TSK_FS_ATTR * fs_attr)
-{
-    TSK_MD5_CTX md;
-
-    TSK_MD5_Init(&md);
-
-    if (tsk_fs_attr_walk(fs_attr, TSK_FS_FILE_WALK_FLAG_NONE,
-            md5HashCallback, (void *) &md)) {
-        registerError();
-        return 1;
-    }
-
-    TSK_MD5_Final(md5Hash, &md);
-    return 0;
-}
-
 /**
 * Callback invoked per every unallocated block in the filesystem
 * Creates file ranges and file entries 
@@ -972,7 +773,7 @@ TskAutoDbJava::md5HashAttr(unsigned char md5Hash[16], const TSK_FS_ATTR * fs_att
 TSK_WALK_RET_ENUM TskAutoDbJava::fsWalkUnallocBlocksCb(const TSK_FS_BLOCK *a_block, void *a_ptr) {
     UNALLOC_BLOCK_WLK_TRACK * unallocBlockWlkTrack = (UNALLOC_BLOCK_WLK_TRACK *) a_ptr;
 
-    if (unallocBlockWlkTrack->TskAutoDbJava.m_stopAllProcessing)
+    if (unallocBlockWlkTrack->tskAutoDbJava.m_stopAllProcessing)
         return TSK_WALK_STOP;
 
     // initialize if this is the first block
@@ -1021,8 +822,8 @@ TSK_WALK_RET_ENUM TskAutoDbJava::fsWalkUnallocBlocksCb(const TSK_FS_BLOCK *a_blo
     // at this point we are either chunking and have reached the chunk limit
     // or we're not chunking. Either way we now add what we've got to the DB
     int64_t fileObjId = 0;
-    if (unallocBlockWlkTrack->TskAutoDbJava.m_db->addUnallocBlockFile(unallocBlockWlkTrack->TskAutoDbJava.m_curUnallocDirId, 
-        unallocBlockWlkTrack->fsObjId, unallocBlockWlkTrack->size, unallocBlockWlkTrack->ranges, fileObjId, unallocBlockWlkTrack->TskAutoDbJava.m_curImgId) == TSK_ERR) {
+    if (-1 == addUnallocBlockFile(unallocBlockWlkTrack->tskAutoDbJava.m_curUnallocDirId,
+        unallocBlockWlkTrack->fsObjId, unallocBlockWlkTrack->size, unallocBlockWlkTrack->ranges, fileObjId, unallocBlockWlkTrack->tskAutoDbJava.m_curImgId) == TSK_ERR) {
             // @@@ Handle error -> Don't have access to registerError() though...
     }
 
@@ -1062,7 +863,7 @@ TSK_RETVAL_ENUM TskAutoDbJava::addFsInfoUnalloc(const TSK_DB_FS_INFO & dbFsInfo)
     }
 
     //create a "fake" dir to hold the unalloc files for the fs
-    if (m_db->addUnallocFsBlockFilesParent(dbFsInfo.objId, m_curUnallocDirId, m_curImgId) == TSK_ERR) {
+    if (-1 == addUnallocFsBlockFilesParent(dbFsInfo.objId, m_curUnallocDirId, m_curImgId) == TSK_ERR) {
         tsk_error_set_errstr2("addFsInfoUnalloc: error creating dir for unallocated space");
         registerError();
         return TSK_ERR;
@@ -1096,7 +897,7 @@ TSK_RETVAL_ENUM TskAutoDbJava::addFsInfoUnalloc(const TSK_DB_FS_INFO & dbFsInfo)
     unallocBlockWlkTrack.ranges.push_back(TSK_DB_FILE_LAYOUT_RANGE(byteStart, byteLen, unallocBlockWlkTrack.nextSequenceNo++));
     int64_t fileObjId = 0;
 
-    if (m_db->addUnallocBlockFile(m_curUnallocDirId, dbFsInfo.objId, unallocBlockWlkTrack.size, unallocBlockWlkTrack.ranges, fileObjId, m_curImgId) == TSK_ERR) {
+    if (-1 == addUnallocBlockFile(m_curUnallocDirId, dbFsInfo.objId, unallocBlockWlkTrack.size, unallocBlockWlkTrack.ranges, fileObjId, m_curImgId) == TSK_ERR) {
         registerError();
         tsk_fs_close(fsInfo);
         return TSK_ERR;
@@ -1150,6 +951,9 @@ TSK_RETVAL_ENUM TskAutoDbJava::addUnallocFsSpaceToDb(size_t & numFs) {
         return TSK_OK;
     }
 
+
+    printf("SKIPPING addUnallocFsSpaceToDb!!!!\n"); // TODO TODO
+/*
     uint16_t ret = m_db->getFsInfos(m_curImgId, fsInfos);
     if (ret) {
         tsk_error_set_errstr2("addUnallocFsSpaceToDb: error getting fs infos from db");
@@ -1170,7 +974,8 @@ TSK_RETVAL_ENUM TskAutoDbJava::addUnallocFsSpaceToDb(size_t & numFs) {
 
     //TODO set parent_path for newly created virt dir/file hierarchy for consistency
 
-    return allFsProcessRet;
+    return allFsProcessRet;*/
+    return TSK_OK;
 }
 
 /**
@@ -1182,6 +987,9 @@ TSK_RETVAL_ENUM TskAutoDbJava::addUnallocVsSpaceToDb(size_t & numVsP) {
 
     vector<TSK_DB_VS_PART_INFO> vsPartInfos;
 
+
+    printf("SKIPPING addUnallocVsSpaceToDb!!!!\n"); // TODO TODO
+    /*
     TSK_RETVAL_ENUM retVsPartInfos = m_db->getVsPartInfos(m_curImgId, vsPartInfos);
     if (retVsPartInfos == TSK_ERR) {
         tsk_error_set_errstr2("addUnallocVsSpaceToDb: error getting vs part infos from db");
@@ -1267,7 +1075,7 @@ TSK_RETVAL_ENUM TskAutoDbJava::addUnallocVsSpaceToDb(size_t & numVsP) {
             registerError();
             return TSK_ERR;
         }
-    }
+    }*/
 
     return TSK_OK;
 }
@@ -1279,13 +1087,12 @@ TSK_RETVAL_ENUM TskAutoDbJava::addUnallocVsSpaceToDb(size_t & numVsP) {
 * @returns TSK_OK on success, TSK_ERR on error
 */
 TSK_RETVAL_ENUM TskAutoDbJava::addUnallocImageSpaceToDb() {
-    TSK_RETVAL_ENUM retImgFile = TSK_OK;
 
     const TSK_OFF_T imgSize = getImageSize();
     if (imgSize == -1) {
         tsk_error_set_errstr("addUnallocImageSpaceToDb: error getting current image size, can't create unalloc block file for the image.");
         registerError();
-        retImgFile = TSK_ERR;
+        return TSK_ERR;
     }
     else {
         TSK_DB_FILE_LAYOUT_RANGE tempRange(0, imgSize, 0);
@@ -1293,9 +1100,11 @@ TSK_RETVAL_ENUM TskAutoDbJava::addUnallocImageSpaceToDb() {
         vector<TSK_DB_FILE_LAYOUT_RANGE> ranges;
         ranges.push_back(tempRange);
         int64_t fileObjId = 0;
-        retImgFile = m_db->addUnallocBlockFile(m_curImgId, 0, imgSize, ranges, fileObjId, m_curImgId);
+        if (-1 == addUnallocBlockFile(m_curImgId, 0, imgSize, ranges, fileObjId, m_curImgId)) {
+            return TSK_ERR;
+        }
     }
-    return retImgFile;
+    return TSK_OK;
 }
 
 /**
@@ -1311,11 +1120,3 @@ const std::string TskAutoDbJava::getCurDir() {
     tsk_release_lock(&m_curDirPathLock);
     return curDirPath;
 }
-
-
-bool TskAutoDbJava::isDbOpen() {
-    if(m_db!=NULL) {
-        return m_db->isDbOpen();
-    }
-    return false;
-}
diff --git a/bindings/java/jni/auto_db_java.h b/bindings/java/jni/auto_db_java.h
index 4db8331ef..61132c245 100644
--- a/bindings/java/jni/auto_db_java.h
+++ b/bindings/java/jni/auto_db_java.h
@@ -21,6 +21,7 @@
 using std::string;
 
 #include "tsk/auto/tsk_auto_i.h"
+#include "tsk/auto/tsk_db.h"
 
 
 /** \internal
@@ -46,7 +47,6 @@ class TskAutoDbJava :public TskAuto {
     virtual TSK_FILTER_ENUM filterFs(TSK_FS_INFO * fs_info);
     virtual TSK_RETVAL_ENUM processFile(TSK_FS_FILE * fs_file,
         const char *path);
-    virtual void createBlockMap(bool flag);
     const std::string getCurDir();
     
     /**
@@ -55,14 +55,6 @@ class TskAutoDbJava :public TskAuto {
     */
     bool isDbOpen();
 
-    /**
-     * Calculate hash values of files and add them to database.
-     * Default is false.  Will be set to true if a Hash DB is configured.
-     *
-     * @param flag True to calculate hash values and look them up.
-     */
-    virtual void hashFiles(bool flag);
-
     /**
      * Sets whether or not the file systems for an image should be added when 
      * the image is added to the case database. The default value is true. 
@@ -116,8 +108,6 @@ class TskAutoDbJava :public TskAuto {
         TSK_IMG_TYPE_ENUM imgType, unsigned int sSize, const char* deviceId = NULL);
 #endif
     void stopAddImage();
-    int revertAddImage();
-    int64_t commitAddImage();
 
   private:
     int64_t m_curImgId;     ///< Object ID of image currently being processed
@@ -136,7 +126,6 @@ class TskAutoDbJava :public TskAuto {
     bool m_volFound;
     bool m_poolFound;
     bool m_stopped;
-    bool m_imgTransactionOpen;
     bool m_addFileSystems;
     bool m_noFatFsOrphans;
     bool m_addUnallocSpace;
@@ -151,9 +140,9 @@ class TskAutoDbJava :public TskAuto {
 
     //internal structure to keep track of temp. unalloc block range
     typedef struct _UNALLOC_BLOCK_WLK_TRACK {
-        _UNALLOC_BLOCK_WLK_TRACK(const TskAutoDbJava & tskAutoDb, const TSK_FS_INFO & fsInfo, const int64_t fsObjId, int64_t minChunkSize, int64_t maxChunkSize)
-            : tskAutoDb(tskAutoDb),fsInfo(fsInfo),fsObjId(fsObjId),curRangeStart(0), minChunkSize(minChunkSize), maxChunkSize(maxChunkSize), prevBlock(0), isStart(true), nextSequenceNo(0) {}
-        const TskAutoDbJava & tskAutoDb;
+        _UNALLOC_BLOCK_WLK_TRACK(const TskAutoDbJava & tskAutoDbJava, const TSK_FS_INFO & fsInfo, const int64_t fsObjId, int64_t minChunkSize, int64_t maxChunkSize)
+            : tskAutoDbJava(tskAutoDbJava),fsInfo(fsInfo),fsObjId(fsObjId),curRangeStart(0), minChunkSize(minChunkSize), maxChunkSize(maxChunkSize), prevBlock(0), isStart(true), nextSequenceNo(0) {}
+        const TskAutoDbJava & tskAutoDbJava;
         const TSK_FS_INFO & fsInfo;
         const int64_t fsObjId;
         vector<TSK_DB_FILE_LAYOUT_RANGE> ranges;																																										
@@ -168,9 +157,7 @@ class TskAutoDbJava :public TskAuto {
 
     uint8_t addImageDetails(const char *);
     TSK_RETVAL_ENUM insertFileData(TSK_FS_FILE * fs_file,
-        const TSK_FS_ATTR *, const char *path,
-        const unsigned char *const md5,
-        const TSK_DB_FILES_KNOWN_ENUM known);
+        const TSK_FS_ATTR *, const char *path);
     virtual TSK_RETVAL_ENUM processAttribute(TSK_FS_FILE *,
         const TSK_FS_ATTR * fs_attr, const char *path);
     static TSK_WALK_RET_ENUM md5HashCallback(TSK_FS_FILE * file,
diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.cpp b/bindings/java/jni/dataModel_SleuthkitJNI.cpp
index f9c0a5700..3cb66fb24 100644
--- a/bindings/java/jni/dataModel_SleuthkitJNI.cpp
+++ b/bindings/java/jni/dataModel_SleuthkitJNI.cpp
@@ -14,6 +14,7 @@
 #include "tsk/auto/tsk_is_image_supported.h"
 #include "tsk/img/img_writer.h"
 #include "tsk/img/raw.h"
+#include "auto_db_java.h"
 #include "jni.h"
 #include "dataModel_SleuthkitJNI.h"
 #include <locale.h>
@@ -1023,28 +1024,22 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_initializeAddImgNat(JNIEnv * env, jcla
     }
 
     // set the options flags
-    tskAuto->setAddFileSystems(addFileSystems?true:false);
+    tskAutoJava->setAddFileSystems(addFileSystems?true:false);
     if (addFileSystems) {
         if (addUnallocSpace) {
             // Minimum size of unalloc files: 500 MB, maximum size: 1 GB
-            tskAuto->setAddUnallocSpace((int64_t)500 * 1024 * 1024, (int64_t)1024 * 1024 * 1024);
+            tskAutoJava->setAddUnallocSpace((int64_t)500 * 1024 * 1024, (int64_t)1024 * 1024 * 1024);
         }
         else {
-            tskAuto->setAddUnallocSpace(false);
+            tskAutoJava->setAddUnallocSpace(false);
         }
-        tskAuto->setNoFatFsOrphans(skipFatFsOrphans?true:false);
+        tskAutoJava->setNoFatFsOrphans(skipFatFsOrphans?true:false);
     } else {
-        tskAuto->setAddUnallocSpace(false);
-        tskAuto->setNoFatFsOrphans(true);
+        tskAutoJava->setAddUnallocSpace(false);
+        tskAutoJava->setNoFatFsOrphans(true);
     }
 
-    // we don't use the block map and it slows it down
-    tskAuto->createBlockMap(false);
-
-    // ingest modules calc hashes
-    tskAuto->hashFiles(false);
-
-    return (jlong) tskAuto;
+    return (jlong)tskAutoJava;
 }
 
 /*
-- 
GitLab