diff --git a/CHANGES.txt b/CHANGES.txt index 53fda1fd4363ef584d2180b9b5513b9d14759928..82f35f041589165deded8df5e13d526b46331dda 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -77,6 +77,9 @@ after the initialized part of an NTFS file (VDL Slack). 5/7/09: Update: Finish rest of 2367426 so that uninitialized file space is shown if slack space is requested. +5/8/09: Update: Resolved issue 2596153 by changing arguments to the +img_open functions. + ---------------- VERSION 3.0.1 -------------- 11/11/08: Bug Fix: Fixed crashing bug in ifind on FAT file system. diff --git a/tsk3/fs/fs_attr.c b/tsk3/fs/fs_attr.c index 12fe109d38e1fb4c2b1511beed59f356dc4ac9b8..47785f75a3731a45998ca2ac215d7ac5204798ae 100644 --- a/tsk3/fs/fs_attr.c +++ b/tsk3/fs/fs_attr.c @@ -839,7 +839,7 @@ tsk_fs_attr_walk_nonres(const TSK_FS_ATTR * fs_attr, if ((off + fs->block_size > fs_attr->nrd.initsize) && ((a_flags & TSK_FS_FILE_READ_FLAG_SLACK) == 0)) { memset(&buf[fs_attr->nrd.initsize - off], 0, - fs->block_size - (fs_attr->nrd.initsize - + fs->block_size - (size_t)(fs_attr->nrd.initsize - off)); } } @@ -1116,9 +1116,9 @@ tsk_fs_attr_read(const TSK_FS_ATTR * a_fs_attr, TSK_OFF_T a_offset, meta->addr : 0); } // we return 0s for reads past the initsize (unless they want slack space) - else if (((data_run_cur->offset + + else if (((TSK_OFF_T)((data_run_cur->offset + blkoffset_inrun) * fs->block_size + - byteoffset_toread >= a_fs_attr->nrd.initsize) + byteoffset_toread) >= a_fs_attr->nrd.initsize) && ((a_flags & TSK_FS_FILE_READ_FLAG_SLACK) == 0)) { memset(&a_buf[len_toread - len_remain], 0, len_inrun); if (tsk_verbose) @@ -1158,16 +1158,16 @@ tsk_fs_attr_read(const TSK_FS_ATTR * a_fs_attr, TSK_OFF_T a_offset, } // see if part of the data is in the non-initialized space - if (((data_run_cur->offset + + if (((TSK_OFF_T)((data_run_cur->offset + blkoffset_inrun) * fs->block_size + - byteoffset_toread + len_inrun > + byteoffset_toread + len_inrun) > a_fs_attr->nrd.initsize) && ((a_flags & TSK_FS_FILE_READ_FLAG_SLACK) == 0)) { size_t off = - (data_run_cur->offset + + (size_t)((data_run_cur->offset + blkoffset_inrun) * fs->block_size + byteoffset_toread + len_inrun - - a_fs_attr->nrd.initsize; + a_fs_attr->nrd.initsize); memset(&a_buf[len_toread - len_remain + off], 0, len_inrun - off); } diff --git a/tsk3/fs/ntfs.c b/tsk3/fs/ntfs.c index 445c122b7d8c962ff1b74ee75f231cb4c449e41b..71c9295cfb1de18bb7371fca64d231c369029fcb 100644 --- a/tsk3/fs/ntfs.c +++ b/tsk3/fs/ntfs.c @@ -1513,7 +1513,7 @@ ntfs_file_read_special(const TSK_FS_ATTR * a_fs_attr, (a_fs_attr->fs_file->meta->size - (a_offset + buf_idx))) cpylen = - (a_fs_attr->fs_file->meta->size - (a_offset + + (size_t)(a_fs_attr->fs_file->meta->size - (a_offset + buf_idx)); memcpy(&a_buf[buf_idx], &comp.uncomp_buf[byteoffset],