From eb921f9125f1a6a1182d5c0ee018d747e63dc485 Mon Sep 17 00:00:00 2001 From: Ann Priestman <apriestman@basistech.com> Date: Thu, 2 Feb 2017 08:36:15 -0500 Subject: [PATCH] Cleanup --- bindings/java/jni/dataModel_SleuthkitJNI.cpp | 178 +++++++++--------- .../org/sleuthkit/datamodel/SleuthkitJNI.java | 1 - tsk/auto/auto_db.cpp | 164 ++++++++-------- tsk/auto/tsk_case_db.h | 4 +- 4 files changed, 173 insertions(+), 174 deletions(-) diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.cpp b/bindings/java/jni/dataModel_SleuthkitJNI.cpp index 311afd02c..76694d185 100644 --- a/bindings/java/jni/dataModel_SleuthkitJNI.cpp +++ b/bindings/java/jni/dataModel_SleuthkitJNI.cpp @@ -206,7 +206,7 @@ toTCHAR(JNIEnv * env, TSK_TCHAR * buffer, size_t size, jstring strJ) char *str8 = (char *) env->GetStringUTFChars(strJ, &isCopy); #ifdef TSK_WIN32 - // Windows TCHAR is UTF16 in Windows, so convert + // Windows TCHAR is UTF16 in Windows, so convert UTF16 *utf16 = (UTF16 *) buffer; UTF8 *utf8 = (UTF8 *) str8;; TSKConversionResult retval; @@ -224,12 +224,12 @@ toTCHAR(JNIEnv * env, TSK_TCHAR * buffer, size_t size, jstring strJ) return 1; } - // "utf16" now points to last char. Need to NULL terminate the string. + // "utf16" now points to last char. Need to NULL terminate the string. *utf16 = '\0'; #else - // nothing to convert. Keep it as UTF8 - strncpy((char *)&buffer[0], str8, size); + // nothing to convert. Keep it as UTF8 + strncpy((char *)&buffer[0], str8, size); #endif env->ReleaseStringUTFChars(strJ, str8); @@ -1097,14 +1097,14 @@ JNIEXPORT void JNICALL setThrowTskCoreError(env, msgss.str().c_str()); } else if (ret == 2) { - if(tskAuto->isDbOpen()) { - // if we can still talk to the database, it's a non-fatal error - setThrowTskDataError(env, msgss.str().c_str()); - } - else { - // we cannot talk to the database, fatal error - setThrowTskCoreError(env, msgss.str().c_str()); - } + if(tskAuto->isDbOpen()) { + // if we can still talk to the database, it's a non-fatal error + setThrowTskDataError(env, msgss.str().c_str()); + } + else { + // we cannot talk to the database, fatal error + setThrowTskCoreError(env, msgss.str().c_str()); + } } } @@ -1140,72 +1140,72 @@ JNIEXPORT void JNICALL */ JNIEXPORT void JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_runAddImgNat(JNIEnv * env, - jclass obj, jlong process, jstring deviceId, jlong a_img_info, jstring timeZone) { - - TskAutoDb *tskAuto = ((TskAutoDb *)process); - if (!tskAuto || tskAuto->m_tag != TSK_AUTO_TAG) { - setThrowTskCoreError(env, - "runAddImgNat: Invalid TskAutoDb object passed in"); - return; - } - - jboolean isCopy; - const char *device_id = NULL; - if (NULL != deviceId) { - device_id = (const char *)env->GetStringUTFChars(deviceId, &isCopy); - if (NULL == device_id) { - setThrowTskCoreError(env, "runAddImgNat: Can't convert data source id string"); - return; - } - } - - // Set the time zone. - if (env->GetStringLength(timeZone) > 0) { - const char *time_zone = env->GetStringUTFChars(timeZone, &isCopy); - tskAuto->setTz(string(time_zone)); - env->ReleaseStringUTFChars(timeZone, time_zone); - } - - // Save the image handle to the TskAutoDb 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) { - stringstream msgss; - msgss << "Errors occured while ingesting image " << std::endl; - vector<TskAuto::error_record> errors = tskAuto->getErrorList(); - for (size_t i = 0; i < errors.size(); i++) { - msgss << (i + 1) << ". "; - msgss << (TskAuto::errorRecordToString(errors[i])); - msgss << " " << std::endl; - } - - if (ret == 1) { - //fatal error - setThrowTskCoreError(env, msgss.str().c_str()); - } - else if (ret == 2) { - if (tskAuto->isDbOpen()) { - // if we can still talk to the database, it's a non-fatal error - setThrowTskDataError(env, msgss.str().c_str()); - } - else { - // we cannot talk to the database, fatal error - setThrowTskCoreError(env, msgss.str().c_str()); - } - } - } - - // @@@ SHOULD WE CLOSE HERE before we commit / revert etc. - //close image first before freeing the image paths - tskAuto->closeImage(); - - // Cleanup - env->ReleaseStringUTFChars(deviceId, (const char *)device_id); - - // if process completes successfully, must call revertAddImgNat or commitAddImgNat to free the TskAutoDb + jclass obj, jlong process, jstring deviceId, jlong a_img_info, jstring timeZone) { + + TskAutoDb *tskAuto = ((TskAutoDb *)process); + if (!tskAuto || tskAuto->m_tag != TSK_AUTO_TAG) { + setThrowTskCoreError(env, + "runAddImgNat: Invalid TskAutoDb object passed in"); + return; + } + + jboolean isCopy; + const char *device_id = NULL; + if (NULL != deviceId) { + device_id = (const char *)env->GetStringUTFChars(deviceId, &isCopy); + if (NULL == device_id) { + setThrowTskCoreError(env, "runAddImgNat: Can't convert data source id string"); + return; + } + } + + // Set the time zone. + if (env->GetStringLength(timeZone) > 0) { + const char *time_zone = env->GetStringUTFChars(timeZone, &isCopy); + tskAuto->setTz(string(time_zone)); + env->ReleaseStringUTFChars(timeZone, time_zone); + } + + // Save the image handle to the TskAutoDb 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) { + stringstream msgss; + msgss << "Errors occured while ingesting image " << std::endl; + vector<TskAuto::error_record> errors = tskAuto->getErrorList(); + for (size_t i = 0; i < errors.size(); i++) { + msgss << (i + 1) << ". "; + msgss << (TskAuto::errorRecordToString(errors[i])); + msgss << " " << std::endl; + } + + if (ret == 1) { + //fatal error + setThrowTskCoreError(env, msgss.str().c_str()); + } + else if (ret == 2) { + if (tskAuto->isDbOpen()) { + // if we can still talk to the database, it's a non-fatal error + setThrowTskDataError(env, msgss.str().c_str()); + } + else { + // we cannot talk to the database, fatal error + setThrowTskCoreError(env, msgss.str().c_str()); + } + } + } + + // @@@ SHOULD WE CLOSE HERE before we commit / revert etc. + //close image first before freeing the image paths + tskAuto->closeImage(); + + // Cleanup + env->ReleaseStringUTFChars(deviceId, (const char *)device_id); + + // if process completes successfully, must call revertAddImgNat or commitAddImgNat to free the TskAutoDb } @@ -1427,7 +1427,7 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_openFileNat(JNIEnv * env, return 0; } - + TSK_FS_FILE *file_info; //open file file_info = tsk_fs_file_open_meta(fs_info, NULL, (TSK_INUM_T) file_id); @@ -1554,7 +1554,7 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_readImgNat(JNIEnv * env, if (dynBuf) { free(buf); } - if (copiedbytes == -1) { + if (copiedbytes == -1) { setThrowTskCoreError(env, tsk_error_get()); } return (jint)copiedbytes; @@ -1608,7 +1608,7 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_readVsNat(JNIEnv * env, } // package it up for return - // adjust number bytes to copy + // adjust number bytes to copy ssize_t copybytes = bytesread; jsize jbuflen = env->GetArrayLength(jbuf); if (jbuflen < copybytes) @@ -1759,8 +1759,8 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_readFsNat(JNIEnv * env, * or the start of the slack space */ typedef enum { - TSK_FS_FILE_READ_OFFSET_TYPE_START_OF_FILE = 0x00, - TSK_FS_FILE_READ_OFFSET_TYPE_START_OF_SLACK = 0x01, + TSK_FS_FILE_READ_OFFSET_TYPE_START_OF_FILE = 0x00, + TSK_FS_FILE_READ_OFFSET_TYPE_START_OF_SLACK = 0x01, } TSK_FS_FILE_READ_OFFSET_TYPE_ENUM; /* @@ -1777,7 +1777,7 @@ JNIEXPORT jint JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_readFileNat(JNIEnv * env, jclass obj, jlong a_file_handle, jbyteArray jbuf, jlong offset, jint offset_type, jlong len) { - //use fixed size stack-allocated buffer if possible + //use fixed size stack-allocated buffer if possible char fixed_buf [FIXED_BUF_SIZE]; char * buf = fixed_buf; @@ -1822,10 +1822,10 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_readFileNat(JNIEnv * env, // package it up for return // adjust number bytes to copy - ssize_t copybytes = bytesread; - jsize jbuflen = env->GetArrayLength(jbuf); - if (jbuflen < copybytes) - copybytes = jbuflen; + ssize_t copybytes = bytesread; + jsize jbuflen = env->GetArrayLength(jbuf); + if (jbuflen < copybytes) + copybytes = jbuflen; ssize_t copiedbytes = copyBufToByteArray(env, jbuf, buf, copybytes); if (dynBuf) { @@ -1945,7 +1945,7 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_closeFileNat(JNIEnv * env, //exception already set return; } - + TSK_FS_FILE * file_info = file_handle->fs_file; tsk_fs_file_close(file_info); //also closes the attribute diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java index 9149ed012..2908cbab6 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java @@ -234,7 +234,6 @@ public void run(String deviceId, String[] imageFilePaths) throws TskCoreExceptio if (0 == tskAutoDbPointer) { throw new TskCoreException("initAddImgNat returned a NULL TskAutoDb pointer"); } - //runAddImgNat(tskAutoDbPointer, deviceId, imageFilePaths, imageFilePaths.length, timeZone); runAddImgNat(tskAutoDbPointer, deviceId, imageHandle, timeZone); } diff --git a/tsk/auto/auto_db.cpp b/tsk/auto/auto_db.cpp index 0571089ce..7d45c874d 100644 --- a/tsk/auto/auto_db.cpp +++ b/tsk/auto/auto_db.cpp @@ -162,7 +162,7 @@ uint8_t return retval; } - return (addImageDetails(a_deviceId)); + return (addImageDetails(a_deviceId)); #else return openImageUtf8(a_num, a_images, a_type, a_ssize, a_deviceId); #endif @@ -177,11 +177,11 @@ uint8_t uint8_t TskAutoDb::openImage(const char* a_deviceId) { - if (m_img_info == NULL) { - return 1; - } + if (m_img_info == NULL) { + return 1; + } - return(addImageDetails(a_deviceId)); + return(addImageDetails(a_deviceId)); } /** @@ -216,36 +216,36 @@ TskAutoDb::addImageDetails(const char* deviceId) return 1; } - char **img_ptrs; + char **img_ptrs; #ifdef TSK_WIN32 - // convert image paths to UTF-8 - img_ptrs = (char **)tsk_malloc(m_img_info->num_img * sizeof(char *)); - if (img_ptrs == NULL) { - return 1; - } - - for (int i = 0; i < m_img_info->num_img; i++) { - char * img2 = (char*)tsk_malloc(1024 * sizeof(char)); - UTF8 *ptr8; - UTF16 *ptr16; - - ptr8 = (UTF8 *)img2; - ptr16 = (UTF16 *)m_img_info->images[i]; - - uint8_t retval = - tsk_UTF16toUTF8_lclorder((const UTF16 **)&ptr16, (UTF16 *) - & ptr16[TSTRLEN(m_img_info->images[i]) + 1], &ptr8, - (UTF8 *)((uintptr_t)ptr8 + 1024), TSKlenientConversion); - if (retval != TSKconversionOK) { - tsk_error_reset(); - tsk_error_set_errno(TSK_ERR_AUTO_UNICODE); - tsk_error_set_errstr("Error converting image to UTF-8\n"); - return 1; - } - img_ptrs[i] = img2; - } + // convert image paths to UTF-8 + img_ptrs = (char **)tsk_malloc(m_img_info->num_img * sizeof(char *)); + if (img_ptrs == NULL) { + return 1; + } + + for (int i = 0; i < m_img_info->num_img; i++) { + char * img2 = (char*)tsk_malloc(1024 * sizeof(char)); + UTF8 *ptr8; + UTF16 *ptr16; + + ptr8 = (UTF8 *)img2; + ptr16 = (UTF16 *)m_img_info->images[i]; + + uint8_t retval = + tsk_UTF16toUTF8_lclorder((const UTF16 **)&ptr16, (UTF16 *) + & ptr16[TSTRLEN(m_img_info->images[i]) + 1], &ptr8, + (UTF8 *)((uintptr_t)ptr8 + 1024), TSKlenientConversion); + if (retval != TSKconversionOK) { + tsk_error_reset(); + tsk_error_set_errno(TSK_ERR_AUTO_UNICODE); + tsk_error_set_errstr("Error converting image to UTF-8\n"); + return 1; + } + img_ptrs[i] = img2; + } #else - img_ptrs = m_img_info->images; + img_ptrs = m_img_info->images; #endif // Add the image names @@ -260,11 +260,11 @@ TskAutoDb::addImageDetails(const char* deviceId) } #ifdef TSK_WIN32 - //cleanup - for (int i = 0; i < m_img_info->num_img; ++i) { - free(img_ptrs[i]); - } - free(img_ptrs); + //cleanup + for (int i = 0; i < m_img_info->num_img; ++i) { + free(img_ptrs[i]); + } + free(img_ptrs); #endif return 0; @@ -486,50 +486,50 @@ uint8_t TskAutoDb::startAddImage(const char* deviceId) { - if (m_img_info == NULL) { - return 1; - } - - if (tsk_verbose) - tsk_fprintf(stderr, "TskAutoDb::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("TskAutoDb::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("TskAutoDb::startAddImage(): Already in a transaction, image might not be commited"); - registerError(); - return 1; - } - - if (m_db->createSavepoint(TSK_ADD_IMAGE_SAVEPOINT)) { - registerError(); - return 1; - } - - m_imgTransactionOpen = true; - if (openImage(deviceId)) { - tsk_error_set_errstr2("TskAutoDb::startAddImage"); - registerError(); - if (revertAddImage()) - registerError(); - return 1; - } - - if (m_addFileSystems) { - return addFilesInImgToDb(); - } - else { - return 0; - } + if (m_img_info == NULL) { + return 1; + } + + if (tsk_verbose) + tsk_fprintf(stderr, "TskAutoDb::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("TskAutoDb::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("TskAutoDb::startAddImage(): Already in a transaction, image might not be commited"); + registerError(); + return 1; + } + + if (m_db->createSavepoint(TSK_ADD_IMAGE_SAVEPOINT)) { + registerError(); + return 1; + } + + m_imgTransactionOpen = true; + if (openImage(deviceId)) { + tsk_error_set_errstr2("TskAutoDb::startAddImage"); + registerError(); + if (revertAddImage()) + registerError(); + return 1; + } + + if (m_addFileSystems) { + return addFilesInImgToDb(); + } + else { + return 0; + } } diff --git a/tsk/auto/tsk_case_db.h b/tsk/auto/tsk_case_db.h index 0d821095c..86e3cc91e 100644 --- a/tsk/auto/tsk_case_db.h +++ b/tsk/auto/tsk_case_db.h @@ -37,7 +37,7 @@ class TskAutoDb:public TskAuto { virtual ~ TskAutoDb(); virtual uint8_t openImage(int, const TSK_TCHAR * const images[], TSK_IMG_TYPE_ENUM, unsigned int a_ssize, const char* deviceId = NULL); - virtual uint8_t openImage(const char* a_deviceId = NULL); + virtual uint8_t openImage(const char* a_deviceId = NULL); virtual uint8_t openImageUtf8(int, const char *const images[], TSK_IMG_TYPE_ENUM, unsigned int a_ssize, const char* deviceId = NULL); virtual void closeImage(); @@ -102,7 +102,7 @@ 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); #ifdef WIN32 - uint8_t startAddImage(const char* deviceId = NULL); + 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