diff --git a/tsk/fs/hfs.c b/tsk/fs/hfs.c index fede915bdb45bba3648b8a890e2adc7c7fa3c8fd..22618534ee3f0411b88407eae8217a863d0b8eec 100644 --- a/tsk/fs/hfs.c +++ b/tsk/fs/hfs.c @@ -835,20 +835,10 @@ hfs_cat_traverse(HFS_INFO * hfs, return 1; } - if (sizeof(hfs_btree_key_cat) > nodesize - rec_off) { - tsk_error_set_errno(TSK_ERR_FS_GENFS); - tsk_error_set_errstr - ("hfs_cat_traverse: record %d in index node %d truncated", - rec, cur_node); - free(node); - return 1; - } - key = (hfs_btree_key_cat *) & node[rec_off]; - keylen = 2 + tsk_getu16(hfs->fs_info.endian, key->key_len); - - if (keylen >= nodesize - rec_off) { + + if (keylen > nodesize - rec_off) { tsk_error_set_errno(TSK_ERR_FS_GENFS); tsk_error_set_errstr ("hfs_cat_traverse: length of key %d in index node %d too large (%d vs %" @@ -857,7 +847,6 @@ hfs_cat_traverse(HFS_INFO * hfs, return 1; } - /* if (tsk_verbose) tsk_fprintf(stderr, @@ -956,19 +945,10 @@ hfs_cat_traverse(HFS_INFO * hfs, return 1; } - if (sizeof(hfs_btree_key_cat) > nodesize - rec_off) { - tsk_error_set_errno(TSK_ERR_FS_GENFS); - tsk_error_set_errstr - ("hfs_cat_traverse: record %d in leaf node %d truncated", - rec, cur_node); - free(node); - return 1; - } - key = (hfs_btree_key_cat *) & node[rec_off]; - keylen = 2 + tsk_getu16(hfs->fs_info.endian, key->key_len); - if ((keylen) > nodesize) { + + if (keylen > nodesize - rec_off) { tsk_error_set_errno(TSK_ERR_FS_GENFS); tsk_error_set_errstr ("hfs_cat_traverse: length of key %d in leaf node %d too large (%d vs %"