diff --git a/tsk/fs/fatxxfs.c b/tsk/fs/fatxxfs.c
index a88674cef4f516e4ee895f5ae48dcd21c103789b..0579fd31af333c5fd59da3eb8d3803da1152adae 100755
--- a/tsk/fs/fatxxfs.c
+++ b/tsk/fs/fatxxfs.c
@@ -63,7 +63,7 @@ fatxxfs_fsstat(TSK_FS_INFO * fs, FILE * hFile)
     FATFS_INFO *fatfs = (FATFS_INFO *) fs;
     FATXXFS_SB *sb = (FATXXFS_SB*)fatfs->boot_sector_buffer;
     char *data_buf;
-    FATXXFS_DENTRY *de;
+    FATXXFS_DENTRY *vol_label_dentry = NULL;
     ssize_t cnt;
 
     // clean up any error messages that are lying around
@@ -90,15 +90,17 @@ fatxxfs_fsstat(TSK_FS_INFO * fs, FILE * hFile)
 
 
     /* Find the dentry that is set as the volume label */
-    de = (FATXXFS_DENTRY *) data_buf;
-    for (i = 0; i < fatfs->ssize; i += sizeof(*de)) {
-        if (de->attrib == FATFS_ATTR_VOLUME)
-            break;
-        de++;
+    vol_label_dentry = NULL;
+    if (fatfs->ssize <= fs->block_size) {
+        FATXXFS_DENTRY *current_entry = (FATXXFS_DENTRY *) data_buf;
+        for (i = 0; i < fatfs->ssize; i += sizeof(*current_entry)) {
+            if (current_entry->attrib == FATFS_ATTR_VOLUME) {
+                vol_label_dentry = current_entry;
+                break;
+            }
+            current_entry++;
+        }
     }
-    /* If we didn't find it, then reset de */
-    if (de->attrib != FATFS_ATTR_VOLUME)
-        de = NULL;
 
 
     /* Print the general file system information */
@@ -134,12 +136,12 @@ fatxxfs_fsstat(TSK_FS_INFO * fs, FILE * hFile)
             sb->a.f16.vol_lab[8], sb->a.f16.vol_lab[9],
             sb->a.f16.vol_lab[10]);
 
-        if ((de) && (de->name)) {
+        if ((vol_label_dentry) && (vol_label_dentry->name)) {
             tsk_fprintf(hFile,
                 "Volume Label (Root Directory): %c%c%c%c%c%c%c%c%c%c%c\n",
-                de->name[0], de->name[1], de->name[2], de->name[3],
-                de->name[4], de->name[5], de->name[6], de->name[7],
-                de->ext[0], de->ext[1], de->ext[2]);
+                vol_label_dentry->name[0], vol_label_dentry->name[1], vol_label_dentry->name[2], vol_label_dentry->name[3],
+                vol_label_dentry->name[4], vol_label_dentry->name[5], vol_label_dentry->name[6], vol_label_dentry->name[7],
+                vol_label_dentry->ext[0], vol_label_dentry->ext[1], vol_label_dentry->ext[2]);
         }
         else {
             tsk_fprintf(hFile, "Volume Label (Root Directory):\n");
@@ -174,12 +176,12 @@ fatxxfs_fsstat(TSK_FS_INFO * fs, FILE * hFile)
             sb->a.f32.vol_lab[8], sb->a.f32.vol_lab[9],
             sb->a.f32.vol_lab[10]);
 
-        if ((de) && (de->name)) {
+        if ((vol_label_dentry) && (vol_label_dentry->name)) {
             tsk_fprintf(hFile,
                 "Volume Label (Root Directory): %c%c%c%c%c%c%c%c%c%c%c\n",
-                de->name[0], de->name[1], de->name[2], de->name[3],
-                de->name[4], de->name[5], de->name[6], de->name[7],
-                de->ext[0], de->ext[1], de->ext[2]);
+                vol_label_dentry->name[0], vol_label_dentry->name[1], vol_label_dentry->name[2], vol_label_dentry->name[3],
+                vol_label_dentry->name[4], vol_label_dentry->name[5], vol_label_dentry->name[6], vol_label_dentry->name[7],
+                vol_label_dentry->ext[0], vol_label_dentry->ext[1], vol_label_dentry->ext[2]);
         }
         else {
             tsk_fprintf(hFile, "Volume Label (Root Directory):\n");
@@ -857,4 +859,4 @@ fatxxfs_is_cluster_alloc(FATFS_INFO *fatfs, TSK_DADDR_T clust)
         return 0;
     else
         return 1;
-}
\ No newline at end of file
+}