Skip to content
Snippets Groups Projects
Commit de928bb1 authored by Richard Cordovano's avatar Richard Cordovano Committed by APriestman
Browse files

Implement more of new addToHashDatabase() API for SleuthkitJNI

parent 62e20d85
No related branches found
No related tags found
No related merge requests found
......@@ -311,6 +311,66 @@ JNIEXPORT jint JNICALL
return hashDbs.size();
}
/**
* Begins a hash database transaction.
* @param env Pointer to Java environment from which this method was called.
* @param obj The Java object from which this method was called.
* @param dbHandle A handle for the hash database.
* @return 1 on error and 0 on success.
*/
JNIEXPORT jint JNICALL
Java_org_sleuthkit_datamodel_SleuthkitJNI_hashDbBeginTransactionNat(
JNIEnv * env, jclass obj, jint dbHandle)
{
if((size_t) dbHandle > hashDbs.size()) {
setThrowTskCoreError(env, "Invalid database handle");
return 1;
}
TSK_HDB_INFO * db = hashDbs.at(dbHandle-1);
if(!db) {
setThrowTskCoreError(env, "Invalid database handle");
return 1;
}
if(!db->accepts_updates()) {
setThrowTskCoreError(env, "Database does not accept updates");
return 1;
}
return 0;
}
/**
* Ends a hash database transaction.
* @param env Pointer to Java environment from which this method was called.
* @param obj The Java object from which this method was called.
* @param dbHandle A handle for the hash database.
* @return 1 on error and 0 on success.
*/
JNIEXPORT jint JNICALL
Java_org_sleuthkit_datamodel_SleuthkitJNI_hashDbEndTransactionNat(
JNIEnv * env, jclass obj, jint dbHandle)
{
if((size_t) dbHandle > hashDbs.size()) {
setThrowTskCoreError(env, "Invalid database handle");
return 1;
}
TSK_HDB_INFO * db = hashDbs.at(dbHandle-1);
if(!db) {
setThrowTskCoreError(env, "Invalid database handle");
return 1;
}
if(!db->accepts_updates()) {
setThrowTskCoreError(env, "Database does not accept updates");
return 1;
}
return 0;
}
/**
* Adds data to a hash database.
* @param env Pointer to Java environment from which this method was called.
......
......@@ -65,6 +65,14 @@ JNIEXPORT jint JNICALL
Java_org_sleuthkit_datamodel_SleuthkitJNI_hashDbNewNat(JNIEnv * env,
jclass obj, jstring pathJ);
JNIEXPORT jint JNICALL
Java_org_sleuthkit_datamodel_SleuthkitJNI_hashDbBeginTransactionNat(
JNIEnv * env, jclass obj, jint dbHandle);
JNIEXPORT jint JNICALL
Java_org_sleuthkit_datamodel_SleuthkitJNI_hashDbEndTransactionNat(
JNIEnv * env, jclass obj, jint dbHandle);
/*
* Class: org_sleuthkit_datamodel_SleuthkitJNI
* Method: hashDbAddRecordNat
......
......@@ -54,7 +54,11 @@ public class SleuthkitJNI {
private static native int hashDbOpenNat(String hashDbPath) throws TskCoreException;
private static native int hashDbNewNat(String hashDbPath) throws TskCoreException;
private static native int hashDbBeginTransactionNat(int dbHandle) throws TskCoreException;
private static native int hashDbEndTransactionNat(int dbHandle) throws TskCoreException;
private static native int hashDbAddEntryNat(String filename, String hashMd5, String hashSha1, String hashSha256, String comment, int dbHandle) throws TskCoreException;
private static native boolean hashDbIsUpdateableNat(int dbHandle);
......@@ -688,11 +692,15 @@ public static void addToHashDatabase(String filename, String md5, String sha1, S
}
public static void addToHashDatabase(List<HashEntry> hashes, int dbHandle) throws TskCoreException {
// RJCTODO: Begin transaction
for (HashEntry entry : hashes) {
hashDbAddEntryNat(entry.getFileName(), entry.getMd5Hash(), entry.getSha1Hash(), entry.getSha256Hash(), entry.getComment(), dbHandle);
hashDbBeginTransactionNat(dbHandle);
try {
for (HashEntry entry : hashes) {
hashDbAddEntryNat(entry.getFileName(), entry.getMd5Hash(), entry.getSha1Hash(), entry.getSha256Hash(), entry.getComment(), dbHandle);
}
}
finally {
hashDbEndTransactionNat(dbHandle);
}
// RJCTODO: end transaction
}
public static boolean isUpdateableHashDatabase(int dbHandle) throws TskCoreException {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment