diff --git a/tsk/auto/auto_db.cpp b/tsk/auto/auto_db.cpp
index 92e932f8399d1e2da9f45f85afc676ea46e948c7..5eeab9381c0cd4dbf7a9e0aaa49a0f44fdc56180 100755
--- a/tsk/auto/auto_db.cpp
+++ b/tsk/auto/auto_db.cpp
@@ -222,62 +222,25 @@ TskAutoDb::addImageDetails(const char* deviceId)
 		   sha1 = ewf_info->sha1hash;
 	   }
 
-	   char * header_result = libewf_read_description(ewf_info->handle);
-
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_case_number(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_evidence_number(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_examiner_name(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_notes(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_model(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_serial_number(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_device_label(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_version(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_platform(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_acquired_date(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_system_date(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_acquiry_operating_system(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
-
-	   header_result = libewf_read_acquiry_software_version(ewf_info->handle);
-	   collectionDetails.append(header_result);
-	   free(header_result);
+	   //Need 1MB for libewf read and extra 100 bytes for header name and formatting
+       const size_t buffer_size = 1024100;
+       char result[buffer_size];
+
+	   //Populate all of the libewf header values for the acquisition details column
+	   collectionDetails.append(libewf_read_description(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_case_number(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_evidence_number(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_examiner_name(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_notes(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_model(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_serial_number(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_device_label(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_version(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_platform(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_acquired_date(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_system_date(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_acquiry_operating_system(ewf_info->handle, result, buffer_size));
+	   collectionDetails.append(libewf_read_acquiry_software_version(ewf_info->handle, result, buffer_size));
    }
 #endif
 
diff --git a/tsk/img/ewf.c b/tsk/img/ewf.c
index f6f76589ab6831f513faa24a088ba8386a7f9123..35eec15548628289a718d5fab86689fcbdf4931b 100755
--- a/tsk/img/ewf.c
+++ b/tsk/img/ewf.c
@@ -400,7 +400,7 @@ ewf_open(int a_num_img,
         tsk_img_free(ewf_info);
 
         if (tsk_verbose != 0) {
-            tsk_fprintf(stderr, "Error getting size of EWF file\n");
+            tsk_fprintf(stderr, "Error getting MD5 of EWF file\n");
         }
         return (NULL);
     }
@@ -415,14 +415,14 @@ ewf_open(int a_num_img,
 
         getError(ewf_error, error_string);
         tsk_error_set_errstr("ewf_open file: %" PRIttocTSK
-            ": Error getting MD5 of image (%s)", a_images[0],
+            ": Error getting SHA1 of image (%s)", a_images[0],
             error_string);
         libewf_error_free(&ewf_error);
 
         tsk_img_free(ewf_info);
 
         if (tsk_verbose != 0) {
-            tsk_fprintf(stderr, "Error getting size of EWF file\n");
+            tsk_fprintf(stderr, "Error getting SHA1 of EWF file\n");
 		}
         return (NULL);
 	}
diff --git a/tsk/img/tsk_img_i.h b/tsk/img/tsk_img_i.h
index ce7e6e86e0204f5d121cadcfc04374e04974c9cc..5a3c97c33588c423d5d5e0430aa1a71d54800deb 100755
--- a/tsk/img/tsk_img_i.h
+++ b/tsk/img/tsk_img_i.h
@@ -27,8 +27,6 @@
 #include <fcntl.h>
 #include <errno.h>
 
-#define BUFFER_SIZE 1024000
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -46,88 +44,81 @@ inline int is_blank(const char* str) {
     return 1;
 }
 
-inline char* read_libewf_header_value(libewf_handle_t *handle, const uint8_t *identifier, size_t identifier_length, const char* key) {
-    libewf_error_t *ewf_error = NULL;
-    char* header_value = (char* )malloc(BUFFER_SIZE);
-    header_value[0] = '\0';
-    if (header_value == NULL) {
-        return header_value;
-    }
+/**
+* Reads the first 1 MB of the libewf header
+*/
+inline char* read_libewf_header_value(libewf_handle_t *handle, char* result_buffer, const size_t buffer_size, const uint8_t *identifier, size_t identifier_length, const char* key) {
+	result_buffer[0] = '\0';
 
-    int result = libewf_handle_get_utf8_header_value(handle, identifier, identifier_length, (uint8_t *)header_value, BUFFER_SIZE, &ewf_error);
-    if (result == -1 || is_blank(header_value)) {
-        return header_value;
-    }
+    strcpy(result_buffer, key);
+	libewf_error_t * ewf_error;
+	size_t key_len = strlen(key);
 	
-    //+ 2 for new line char and null byte
-    char* result_str = (char*) malloc((strlen(key) + strlen(header_value) + 2) * sizeof(char));
-    if (result_str == NULL) {
-        return header_value;
-    }
-
-    strcpy(result_str, key);
-    strcat(result_str, header_value);
-    strcat(result_str, "\n");
-
-	free(header_value);
+    int result = libewf_handle_get_utf8_header_value(handle, identifier, identifier_length, (uint8_t *)(result_buffer + key_len), buffer_size - key_len, &ewf_error);
+	if (result != -1 && !is_blank(result_buffer + key_len)) {
+		strcat(result_buffer, "\n");
+	} else {
+		//if blank or error, return nothing!
+		result_buffer[0] = '\0';
+	}
 
-    return result_str;
+	return result_buffer;
 }
 
-inline char* libewf_read_description(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "description", 11, "Description: ");
+inline char* libewf_read_description(libewf_handle_t *handle, char* result_buffer, const size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "description", 11, "Description: ");
 }
 
-inline char* libewf_read_case_number(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "case_number", 11, "Case Number: ");
+inline char* libewf_read_case_number(libewf_handle_t *handle,  char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "case_number", 11, "Case Number: ");
 }
 
-inline char* libewf_read_evidence_number(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "evidence_number", 15, "Evidence Number: ");
+inline char* libewf_read_evidence_number(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "evidence_number", 15, "Evidence Number: ");
 }
 
-inline char* libewf_read_examiner_name(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "examiner_name", 13, "Examiner Name: ");
+inline char* libewf_read_examiner_name(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "examiner_name", 13, "Examiner Name: ");
 }
 
-inline char* libewf_read_notes(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "notes", 5, "Notes: ");
+inline char* libewf_read_notes(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "notes", 5, "Notes: ");
 }
 
-inline char* libewf_read_model(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "model", 5, "Model: ");
+inline char* libewf_read_model(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "model", 5, "Model: ");
 }
 
-inline char* libewf_read_serial_number(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "serial_number", 13, "Serial Number: ");
+inline char* libewf_read_serial_number(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "serial_number", 13, "Serial Number: ");
 }
 
-inline char* libewf_read_device_label(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "device_label", 12, "Device Label:");
+inline char* libewf_read_device_label(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "device_label", 12, "Device Label:");
 }
 
-inline char* libewf_read_version(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "version", 7, "Version: ");
+inline char* libewf_read_version(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "version", 7, "Version: ");
 }
 
-inline char* libewf_read_platform(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "platform", 8, "Platform: ");
+inline char* libewf_read_platform(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "platform", 8, "Platform: ");
 }
 
-inline char* libewf_read_acquired_date(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "acquiry_date", 12, "Acquired Date: ");
+inline char* libewf_read_acquired_date(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "acquiry_date", 12, "Acquired Date: ");
 }
 
-inline char* libewf_read_system_date(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "system_date", 11, "System Date: ");
+inline char* libewf_read_system_date(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "system_date", 11, "System Date: ");
 }
 
-inline char* libewf_read_acquiry_operating_system(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "acquiry_operating_system", 24, "Acquiry Operating System: ");
+inline char* libewf_read_acquiry_operating_system(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "acquiry_operating_system", 24, "Acquiry Operating System: ");
 }
 
-inline char* libewf_read_acquiry_software_version(libewf_handle_t *handle) {
-    return read_libewf_header_value(handle, (uint8_t *) "acquiry_software_version", 24, "Acquiry Software Version: ");
+inline char* libewf_read_acquiry_software_version(libewf_handle_t *handle, char* result_buffer, size_t buffer_size) {
+    return read_libewf_header_value(handle, result_buffer, buffer_size, (uint8_t *) "acquiry_software_version", 24, "Acquiry Software Version: ");
 }
 #endif