File: sleuthkit-4.6.5-ext2fs_dent.patch

package info (click to toggle)
pytsk 20190121-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,344 kB
  • sloc: python: 3,645; ansic: 3,090; makefile: 69; sh: 40
file content (132 lines) | stat: -rw-r--r-- 5,145 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
diff --git a/tsk/fs/ext2fs_dent.c b/tsk/fs/ext2fs_dent.c
index f590bd07..9034d234 100644
--- a/tsk/fs/ext2fs_dent.c
+++ b/tsk/fs/ext2fs_dent.c
@@ -10,7 +10,7 @@
 **
 ** TASK
 ** Copyright (c) 2002 Brian Carrier, @stake Inc.  All rights reserved
-**
+*
 ** TCTUTILS
 ** Copyright (c) 2001 Brian Carrier.  All rights reserved
 **
@@ -35,49 +35,51 @@ ext2fs_dent_copy(EXT2FS_INFO * ext2fs,
     char *ext2_dent, TSK_FS_NAME * fs_name)
 {
     TSK_FS_INFO *fs = &(ext2fs->fs_info);
+    ext2fs_dentry1 *dir1 = NULL;
+    ext2fs_dentry2 *dir2 = NULL;
 
     if (ext2fs->deentry_type == EXT2_DE_V1) {
-        ext2fs_dentry1 *dir = (ext2fs_dentry1 *) ext2_dent;
+        dir1 = (ext2fs_dentry1 *) ext2_dent;
 
-        fs_name->meta_addr = tsk_getu32(fs->endian, dir->inode);
+        fs_name->meta_addr = tsk_getu32(fs->endian, dir1->inode);
 
         /* ext2 does not null terminate */
-        if (tsk_getu16(fs->endian, dir->name_len) >= fs_name->name_size) {
+        if (tsk_getu16(fs->endian, dir1->name_len) >= fs_name->name_size) {
             tsk_error_reset();
             tsk_error_set_errno(TSK_ERR_FS_ARG);
             tsk_error_set_errstr
                 ("ext2fs_dent_copy: Name Space too Small %d %" PRIuSIZE "",
-                tsk_getu16(fs->endian, dir->name_len), fs_name->name_size);
+                tsk_getu16(fs->endian, dir1->name_len), fs_name->name_size);
             return 1;
         }
 
         /* Copy and Null Terminate */
-        strncpy(fs_name->name, dir->name, tsk_getu16(fs->endian,
-                dir->name_len));
-        fs_name->name[tsk_getu16(fs->endian, dir->name_len)] = '\0';
+        strncpy(fs_name->name, dir1->name, tsk_getu16(fs->endian,
+                dir1->name_len));
+        fs_name->name[tsk_getu16(fs->endian, dir1->name_len)] = '\0';
 
         fs_name->type = TSK_FS_NAME_TYPE_UNDEF;
     }
     else {
-        ext2fs_dentry2 *dir = (ext2fs_dentry2 *) ext2_dent;
+        dir2 = (ext2fs_dentry2 *) ext2_dent;
 
-        fs_name->meta_addr = tsk_getu32(fs->endian, dir->inode);
+        fs_name->meta_addr = tsk_getu32(fs->endian, dir2->inode);
 
         /* ext2 does not null terminate */
-        if (dir->name_len >= fs_name->name_size) {
+        if (dir2->name_len >= fs_name->name_size) {
             tsk_error_reset();
             tsk_error_set_errno(TSK_ERR_FS_ARG);
             tsk_error_set_errstr
                 ("ext2_dent_copy: Name Space too Small %d %" PRIuSIZE "",
-                dir->name_len, fs_name->name_size);
+                dir2->name_len, fs_name->name_size);
             return 1;
         }
 
         /* Copy and Null Terminate */
-        strncpy(fs_name->name, dir->name, dir->name_len);
-        fs_name->name[dir->name_len] = '\0';
+        strncpy(fs_name->name, dir2->name, dir2->name_len);
+        fs_name->name[dir2->name_len] = '\0';
 
-        switch (dir->type) {
+        switch (dir2->type) {
         case EXT2_DE_REG:
             fs_name->type = TSK_FS_NAME_TYPE_REG;
             break;
@@ -129,6 +131,7 @@ ext2fs_dent_parse_block(EXT2FS_INFO * ext2fs, TSK_FS_DIR * a_fs_dir,
     char *dirPtr;
     TSK_FS_NAME *fs_name;
     int minreclen = 4;
+    unsigned int namelen;
 
     if ((fs_name = tsk_fs_name_alloc(EXT2FS_MAXNAMLEN + 1, 0)) == NULL)
         return TSK_ERR;
@@ -138,7 +141,6 @@ ext2fs_dent_parse_block(EXT2FS_INFO * ext2fs, TSK_FS_DIR * a_fs_dir,
      */
     for (idx = 0; idx <= len - EXT2FS_DIRSIZ_lcl(1); idx += minreclen) {
 
-        unsigned int namelen;
         dirPtr = &buf[idx];
 
         if (ext2fs->deentry_type == EXT2_DE_V1) {
@@ -242,8 +244,12 @@ ext2fs_dir_open_meta(TSK_FS_INFO * a_fs, TSK_FS_DIR ** a_fs_dir,
     EXT2FS_INFO *ext2fs = (EXT2FS_INFO *) a_fs;
     char *dirbuf;
     TSK_OFF_T size;
+    TSK_OFF_T offset = 0;
     TSK_FS_DIR *fs_dir;
+    TSK_FS_NAME *fs_name = NULL;
     TSK_LIST *list_seen = NULL;
+    ssize_t len = 0;
+    ssize_t cnt = 0;
 
     /* If we get corruption in one of the blocks, then continue processing.
      * retval_final will change when corruption is detected.  Errors are
@@ -318,11 +324,11 @@ ext2fs_dir_open_meta(TSK_FS_INFO * a_fs, TSK_FS_DIR ** a_fs_dir,
     }
 
     size = roundup(fs_dir->fs_file->meta->size, a_fs->block_size);
-    TSK_OFF_T offset = 0;
+    offset = 0;
 
     while (size > 0) {
-        ssize_t len = (a_fs->block_size < size) ? a_fs->block_size : size;
-        ssize_t cnt = tsk_fs_file_read(fs_dir->fs_file, offset, dirbuf, len, (TSK_FS_FILE_READ_FLAG_ENUM)0);
+        len = (a_fs->block_size < size) ? a_fs->block_size : size;
+        cnt = tsk_fs_file_read(fs_dir->fs_file, offset, dirbuf, len, (TSK_FS_FILE_READ_FLAG_ENUM)0);
         if (cnt != len) {
             tsk_error_reset();
             tsk_error_set_errno(TSK_ERR_FS_FWALK);
@@ -354,7 +360,7 @@ ext2fs_dir_open_meta(TSK_FS_INFO * a_fs, TSK_FS_DIR ** a_fs_dir,
 
     // if we are listing the root directory, add the Orphan directory entry
     if (a_addr == a_fs->root_inum) {
-        TSK_FS_NAME *fs_name = tsk_fs_name_alloc(256, 0);
+        fs_name = tsk_fs_name_alloc(256, 0);
         if (fs_name == NULL)
             return TSK_ERR;