diff --git a/tsk/fs/hfs.c b/tsk/fs/hfs.c index 7e1371bcd817d2e37599d78882a839f8ddddf0df..29c71f744d780b99db191494bc4ab32750e2f86f 100755 --- a/tsk/fs/hfs.c +++ b/tsk/fs/hfs.c @@ -1085,6 +1085,16 @@ hfs_cat_traverse(HFS_INFO * hfs, free(node); 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);