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="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
-				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="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
-				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"