From ee72fe2c60ab27efc3e5b0d30b16808f4a47bee5 Mon Sep 17 00:00:00 2001
From: antonkukoba <akukoba@adfsolutions.com>
Date: Thu, 26 Dec 2013 15:02:45 +0200
Subject: [PATCH] Fixed critical section leak in TSK_FS_INFO

---
 tsk/fs/hfs.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/tsk/fs/hfs.c b/tsk/fs/hfs.c
index 99b55a5e9..6c3e09163 100644
--- a/tsk/fs/hfs.c
+++ b/tsk/fs/hfs.c
@@ -5971,7 +5971,7 @@ hfs_close(TSK_FS_INFO * fs)
     tsk_release_lock(&(hfs->metadata_dir_cache_lock));
     tsk_deinit_lock(&(hfs->metadata_dir_cache_lock));
 
-    free(hfs);
+    tsk_fs_free((TSK_FS_INFO *)hfs);
 }
 
 /* hfs_open - open an hfs file system
@@ -6018,7 +6018,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     len = sizeof(hfs_plus_vh);
     if ((hfs->fs = (hfs_plus_vh *) tsk_malloc(len)) == NULL) {
         fs->tag = 0;
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
@@ -6027,7 +6027,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         tsk_error_set_errstr2("hfs_open: superblock");
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
@@ -6040,7 +6040,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
 
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr("not an HFS+ file system (magic)");
         return NULL;
@@ -6088,7 +6088,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
 
             fs->tag = 0;
             free(hfs->fs);
-            free(hfs);
+            tsk_fs_free((TSK_FS_INFO *)hfs);
 
             /* just re-open with the new offset, then record the offset */
             fs_info2 =
@@ -6103,7 +6103,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         else {
             fs->tag = 0;
             free(hfs->fs);
-            free(hfs);
+            tsk_fs_free((TSK_FS_INFO *)hfs);
             tsk_error_set_errno(TSK_ERR_FS_MAGIC);
             tsk_error_set_errstr
                 ("HFS file systems (other than wrappers HFS+/HFSX file systems) are not supported");
@@ -6169,7 +6169,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 HFS_CATALOG_FILE_ID)) == NULL) {
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
@@ -6181,7 +6181,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         fs->tag = 0;
         tsk_fs_file_close(hfs->catalog_file);
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         tsk_error_errstr2_concat
             (" - Data Attribute not found in Catalog File");
         return NULL;
@@ -6199,7 +6199,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         tsk_error_set_errstr2("hfs_open: Error reading catalog header");
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
-- 
GitLab