diff --git a/tsk/fs/tsk_xfs.h b/tsk/fs/tsk_xfs.h index ca4ec2474093c7177b55b5af0acc1f7de913d9d8..c2467703d08de73d025f26663708b385d3be790d 100644 --- a/tsk/fs/tsk_xfs.h +++ b/tsk/fs/tsk_xfs.h @@ -199,6 +199,8 @@ typedef uint32_t xfs_alloc_ptr_t; typedef struct xfs_btree_sblock xfs_inobt_block_t; +#define XFS_SBLOCK_LEN XFS_INOBT_BLOCK_LEN + typedef struct xfs_inobt_rec { uint32_t ir_startino; uint32_t ir_freecount; diff --git a/tsk/fs/xfs.c b/tsk/fs/xfs.c index c54e6d5f3a56914b52490de6d756cd4c28eef005..7d43793fcddef57aba475b222c7829a9104f214e 100644 --- a/tsk/fs/xfs.c +++ b/tsk/fs/xfs.c @@ -1223,7 +1223,7 @@ xfs_block_getflags(TSK_FS_INFO * a_fs, TSK_DADDR_T a_addr) // take b+tree sorted by block offset cur_sblock_num = agf->agf_roots[0]; if (tsk_verbose) { tsk_fprintf(stderr, "cur_sblock_num = %" PRId64 " \n", cur_sblock_num); } - len = sizeof(xfs_btree_sblock_t); + len = XFS_INOBT_BLOCK_LEN(sb); cnt = tsk_fs_read(&xfs->fs_info, (TSK_OFF_T) sb->sb_blocksize * cur_sblock_num, (char *) cur_btree_sblock, @@ -1258,7 +1258,7 @@ xfs_block_getflags(TSK_FS_INFO * a_fs, TSK_DADDR_T a_addr) len = cur_btree_sblock->bb_numrecs * sizeof(xfs_alloc_key_t); cnt = tsk_fs_read(&xfs->fs_info, (TSK_OFF_T) sb->sb_blocksize * (TSK_OFF_T) cur_sblock_num - + (TSK_OFF_T) sizeof(xfs_btree_sblock_t), + + (TSK_OFF_T) XFS_SBLOCK_LEN(sb), (char *) recs, len); if (cnt != len) { @@ -1277,7 +1277,7 @@ xfs_block_getflags(TSK_FS_INFO * a_fs, TSK_DADDR_T a_addr) len = cur_btree_sblock->bb_numrecs * sizeof(xfs_alloc_ptr_t); cnt = tsk_fs_read(&xfs->fs_info, (TSK_OFF_T) sb->sb_blocksize * (TSK_OFF_T) cur_sblock_num - + (TSK_OFF_T) sizeof(xfs_btree_sblock_t) + + (TSK_OFF_T) XFS_SBLOCK_LEN(sb) + (TSK_OFF_T) (cur_btree_sblock->bb_numrecs * sizeof(xfs_alloc_key_t)), (char *) ptrs, len); @@ -1352,7 +1352,7 @@ xfs_block_getflags(TSK_FS_INFO * a_fs, TSK_DADDR_T a_addr) // read all the records len = cur_btree_sblock->bb_numrecs * sizeof(xfs_alloc_rec_t); cnt = tsk_fs_read(&xfs->fs_info, - (TSK_OFF_T) sb->sb_blocksize * cur_sblock_num + sizeof(xfs_btree_sblock_t), + (TSK_OFF_T) sb->sb_blocksize * cur_sblock_num + XFS_SBLOCK_LEN(sb), (char *) recs, len); if (cnt != len) {