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;
|