From 006c28c7a8541c03217def62a0fbb6baa69cda65 Mon Sep 17 00:00:00 2001 From: Ann Priestman <apriestman@basistech.com> Date: Wed, 6 Nov 2019 11:02:17 -0500 Subject: [PATCH] Adding pool volumes to db --- tsk/auto/auto_db.cpp | 6 ++++++ tsk/auto/db_sqlite.cpp | 26 ++++++++++++++++++++++++++ tsk/auto/tsk_case_db.h | 1 + tsk/auto/tsk_db.h | 2 ++ tsk/auto/tsk_db_sqlite.h | 2 ++ 5 files changed, 37 insertions(+) diff --git a/tsk/auto/auto_db.cpp b/tsk/auto/auto_db.cpp index 516be1479..506173e1a 100755 --- a/tsk/auto/auto_db.cpp +++ b/tsk/auto/auto_db.cpp @@ -308,6 +308,12 @@ TskAutoDb::filterPoolVol(const TSK_POOL_VOLUME_INFO * pool_vol) { printf("filterPoolVol 0x%llx\n", pool_vol->index); m_curPoolVol = pool_vol->index; + + if (m_db->addPoolVolumeInfo(pool_vol, m_curPoolVsId, m_curPoolVol)) { + registerError(); + return TSK_FILTER_STOP; + } + return TSK_FILTER_CONT; } diff --git a/tsk/auto/db_sqlite.cpp b/tsk/auto/db_sqlite.cpp index a0c95f221..d15a3d5ed 100755 --- a/tsk/auto/db_sqlite.cpp +++ b/tsk/auto/db_sqlite.cpp @@ -749,6 +749,32 @@ TskDbSqlite::addVsInfo(const TSK_VS_INFO* vs_info, int64_t parObjId, } +/** +* Adds the sector addresses of the pool volumes into the db. +* @returns 1 on error, 0 on success +*/ +int +TskDbSqlite::addPoolVolumeInfo(const TSK_POOL_VOLUME_INFO* pool_vol, + int64_t parObjId, int64_t& objId) +{ + char* zSQL; + int ret; + + if (addObject(TSK_DB_OBJECT_TYPE_VOL, parObjId, objId)) + return 1; + + zSQL = sqlite3_mprintf( + "INSERT INTO tsk_vs_parts (obj_id, addr, start, length, desc, flags)" + "VALUES (%lld, %" PRIuPNUM ",%" PRIuDADDR ",%" PRIuDADDR ",'%q',%d)", + objId, (int)pool_vol->index, pool_vol->block, pool_vol->num_blocks, + pool_vol->desc, pool_vol->flags); + + ret = attempt_exec(zSQL, + "Error adding data to tsk_vs_parts table: %s\n"); + sqlite3_free(zSQL); + return ret; +} + /** * Adds the sector addresses of the volumes into the db. * @returns 1 on error, 0 on success diff --git a/tsk/auto/tsk_case_db.h b/tsk/auto/tsk_case_db.h index 6ebbde487..c408363b3 100644 --- a/tsk/auto/tsk_case_db.h +++ b/tsk/auto/tsk_case_db.h @@ -128,6 +128,7 @@ class TskAutoDb:public TskAuto { int64_t m_curVsId; ///< Object ID of volume system currently being processed int64_t m_curVolId; ///< Object ID of volume currently being processed int64_t m_curPoolVol; // POOL + int64_t m_curPoolVsId = 59; // POOL - temp int64_t m_curFsId; ///< Object ID of file system currently being processed int64_t m_curFileId; ///< Object ID of file currently being processed TSK_INUM_T m_curDirAddr; ///< Meta address the directory currently being processed diff --git a/tsk/auto/tsk_db.h b/tsk/auto/tsk_db.h index c929ac766..8db94738c 100755 --- a/tsk/auto/tsk_db.h +++ b/tsk/auto/tsk_db.h @@ -175,6 +175,8 @@ class TskDb { virtual int addImageName(int64_t objId, char const *imgName, int sequence) = 0; virtual int addVsInfo(const TSK_VS_INFO * vs_info, int64_t parObjId, int64_t & objId) = 0; virtual int addVolumeInfo(const TSK_VS_PART_INFO * vs_part, int64_t parObjId, int64_t & objId) = 0; + virtual int addPoolVolumeInfo(const TSK_POOL_VOLUME_INFO* pool_vol, + int64_t parObjId, int64_t& objId) = 0; virtual int addFsInfo(const TSK_FS_INFO * fs_info, int64_t parObjId, int64_t & objId) = 0; virtual int addFsFile(TSK_FS_FILE * fs_file, const TSK_FS_ATTR * fs_attr, const char *path, const unsigned char *const md5, diff --git a/tsk/auto/tsk_db_sqlite.h b/tsk/auto/tsk_db_sqlite.h index 3bfb165fe..4c90d3803 100755 --- a/tsk/auto/tsk_db_sqlite.h +++ b/tsk/auto/tsk_db_sqlite.h @@ -50,6 +50,8 @@ class TskDbSqlite : public TskDb { int addImageName(int64_t objId, char const *imgName, int sequence); int addVsInfo(const TSK_VS_INFO * vs_info, int64_t parObjId, int64_t & objId); + int addPoolVolumeInfo(const TSK_POOL_VOLUME_INFO* pool_vol, + int64_t parObjId, int64_t& objId); int addVolumeInfo(const TSK_VS_PART_INFO * vs_part, int64_t parObjId, int64_t & objId); int addFsInfo(const TSK_FS_INFO * fs_info, int64_t parObjId, -- GitLab