diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.cpp b/bindings/java/jni/dataModel_SleuthkitJNI.cpp index afea992bc211badb9f7d2764f27b7482bf0a91b3..ba30afe4955514a8cf2933e1a1096cb2336ced18 100644 --- a/bindings/java/jni/dataModel_SleuthkitJNI.cpp +++ b/bindings/java/jni/dataModel_SleuthkitJNI.cpp @@ -1,10 +1,19 @@ +/* + ** dataModel_SleuthkitJNI + ** The Sleuth Kit + ** + ** Brian Carrier [carrier <at> sleuthkit [dot] org] + ** Copyright (c) 2010-2011 Brian Carrier. All Rights reserved + ** + ** This software is distributed under the Common Public License 1.0 + ** + */ +#include "tsk3/tsk_tools_i.h" #include "jni.h" #include "dataModel_SleuthkitJNI.h" -#include "tsk3/libtsk.h" -#include "tsk3/tsk_tools_i.h" #include "tskAutoDbJNI.h" -#include "tsk3/auto/tsk_auto_i.h" -#include "tsk3/auto/tsk_auto.h" +#include <locale.h> +#include <time.h> TskAutoDbJNI::TskAutoDbJNI(){ @@ -13,28 +22,32 @@ TskAutoDbJNI::TskAutoDbJNI(){ } -TSK_RETVAL_ENUM TskAutoDbJNI::processFile(TSK_FS_FILE * fs_file, - const char *path){ - if(m_cancelled) - return TSK_STOP; - else - return TskAutoDb::processFile(fs_file, path); - } +TSK_RETVAL_ENUM +TskAutoDbJNI::processFile(TSK_FS_FILE * fs_file, + const char *path) { + if(m_cancelled) + return TSK_STOP; + else + return TskAutoDb::processFile(fs_file, path); +} void TskAutoDbJNI::cancelProcess(){ m_cancelled = true; } -/* Throw and exception to java - * @param the java environment to send the exception to - */ -static void throwTskError(JNIEnv *env){ +static void throwTskError(JNIEnv *env, const char *msg){ jclass exception; exception = env->FindClass("org/sleuthkit/datamodel/TskException"); - const char* msg = tsk_error_get(); env->ThrowNew(exception, msg); +} +/* Throw and exception to java + * @param the java environment to send the exception to + */ +static void throwTskError(JNIEnv *env){ + const char* msg = tsk_error_get(); + throwTskError(env, msg); } /* @@ -239,6 +252,7 @@ JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openVolNat (JNIEnv * env, jclass obj, jlong vs_info, jlong vol_id){ TSK_VS_INFO * vsInfo = (TSK_VS_INFO *) vs_info; TSK_VS_PART_INFO * volInfo; + volInfo = (TSK_VS_PART_INFO *) tsk_vs_part_get(vsInfo, (TSK_PNUM_T) vol_id); if(volInfo == NULL){ throwTskError(env); @@ -259,6 +273,7 @@ JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsNat fsInfo = tsk_fs_open_img(img, (TSK_OFF_T) fs_offset /** img->sector_size*/, TSK_FS_TYPE_DETECT); if(fsInfo == NULL){ throwTskError(env); + return NULL; } return (jlong)fsInfo; } @@ -273,6 +288,11 @@ JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openFileNat TSK_FS_INFO * fs = (TSK_FS_INFO *) fs_info; TSK_FS_FILE * file; + if (fs->tag != TSK_FS_INFO_TAG) { + throwTskError(env, "openFile: Invalid FS_INFO object"); + return NULL; + } + file = tsk_fs_file_open_meta(fs, NULL, (TSK_INUM_T) file_id); if(file == NULL){ throwTskError(env); @@ -400,7 +420,12 @@ JNIEXPORT jbyteArray JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_readFsNat throwTskError(env); return NULL; } + TSK_FS_INFO * fs = (TSK_FS_INFO *) fs_info; + if (fs->tag != TSK_FS_INFO_TAG) { + throwTskError(env, "readFsNat: Invalid TSK_FS_INFO object"); + return NULL; + } ssize_t retval = tsk_fs_read(fs, (TSK_OFF_T) offset, buf, (size_t) len); @@ -437,6 +462,10 @@ JNIEXPORT jbyteArray JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_readFileN return NULL; } TSK_FS_FILE * file = (TSK_FS_FILE *) file_info; + if (file->tag != TSK_FS_FILE_TAG) { + throwTskError(env, "readFile: Invalid TSK_FS_FILE address"); + return NULL; + } ssize_t retval = tsk_fs_file_read(file, (TSK_OFF_T) offset, buf, (size_t) len, TSK_FS_FILE_READ_FLAG_NONE); @@ -495,8 +524,12 @@ JNIEXPORT void JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_closeVolNat * Signature: ()V */ JNIEXPORT void JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_closeFsNat -(JNIEnv * env, jclass obj, jlong fs_info){ - tsk_fs_close((TSK_FS_INFO *) fs_info); +(JNIEnv * env, jclass obj, jlong a_fs_info){ + TSK_FS_INFO *fs_info = (TSK_FS_INFO *)a_fs_info; + if (fs_info->tag != TSK_FS_INFO_TAG) { + return; + } + tsk_fs_close(fs_info); } /* @@ -506,7 +539,11 @@ JNIEXPORT void JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_closeFsNat */ JNIEXPORT void JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_closeFileNat (JNIEnv * env, jclass obj, jlong file_info){ - tsk_fs_file_close((TSK_FS_FILE *) file_info); + TSK_FS_FILE *file = (TSK_FS_FILE *)file_info; + if (file->tag != TSK_FS_FILE_TAG) { + return; + } + tsk_fs_file_close(file); } /* diff --git a/bindings/java/jni/tskAutoDbJNI.h b/bindings/java/jni/tskAutoDbJNI.h index 7c5e1b2f2ea1521444ec7ecf73dbc4c829575476..f0651106758cff182b0d4a81ef9c7237ede5c7dd 100644 --- a/bindings/java/jni/tskAutoDbJNI.h +++ b/bindings/java/jni/tskAutoDbJNI.h @@ -1,8 +1,15 @@ +#ifndef _TSK_AUTODB_JNI_H +#define _TSK_AUTODB_JNI_H + class TskAutoDbJNI:public TskAutoDb { - public: - bool m_cancelled; - TskAutoDbJNI(); - virtual TSK_RETVAL_ENUM processFile(TSK_FS_FILE * fs_file, +private: + bool m_cancelled; + +public: + TskAutoDbJNI(); + virtual TSK_RETVAL_ENUM processFile(TSK_FS_FILE * fs_file, const char *path); - void cancelProcess(); + void cancelProcess(); }; + +#endif \ No newline at end of file diff --git a/tools/autotools/tsk_comparedir.h b/tools/autotools/tsk_comparedir.h index 899945caab08e78d159a8a21d77a545ed71e5610..e0ff6bec4597d7fb3ab8e0df19dd88b1d9fc78e7 100644 --- a/tools/autotools/tsk_comparedir.h +++ b/tools/autotools/tsk_comparedir.h @@ -1,3 +1,6 @@ +#ifndef _TSK_COMPAREDIR_H +#define _TSK_COMPAREDIR_H + #include <set> #include <stdlib.h> @@ -22,3 +25,5 @@ class TskCompareDir : public TskAuto { virtual TSK_FILTER_ENUM filterVol(const TSK_VS_PART_INFO * vs_part); uint8_t processLclDir(const TSK_TCHAR *dir); }; + +#endif \ No newline at end of file diff --git a/win32/tsk_jni/tsk_jni.vcproj b/win32/tsk_jni/tsk_jni.vcproj index c0418daa3ad4cf2da0e7d27cda6d25cb4932c019..615e3efe50eff595beb339375973bfbb95782e2c 100644 --- a/win32/tsk_jni/tsk_jni.vcproj +++ b/win32/tsk_jni/tsk_jni.vcproj @@ -42,7 +42,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories=""$(JDK_HOME)\include";"$(JDK_HOME)\include\win32";"$(ProjectDir)\..\.."" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" @@ -122,7 +122,7 @@ Optimization="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories=""$(JDK_HOME)\include";"$(JDK_HOME)\include\win32";"$(ProjectDir)\..\.."" - PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS" RuntimeLibrary="2" EnableFunctionLevelLinking="true" UsePrecompiledHeader="0"