diff --git a/tsk/fs/hfs.c b/tsk/fs/hfs.c index 8c268a53ee079f0d23bf2e12967f256f57fb11e3..8f6d98bd8ae97ecec8c26cc8de73cb6978d1dbe0 100755 --- a/tsk/fs/hfs.c +++ b/tsk/fs/hfs.c @@ -1058,6 +1058,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);