diff --git a/tsk/fs/hfs.c b/tsk/fs/hfs.c
index 60c42658acb5dd983798152847f2140e08c55357..2ba5d995ede265de4834c9c01435279d5c28d319 100644
--- a/tsk/fs/hfs.c
+++ b/tsk/fs/hfs.c
@@ -603,7 +603,7 @@ hfs_ext_find_extent_record_attr(HFS_INFO * hfs, uint32_t cnid,
                 rec_off =
                     tsk_getu16(fs->endian,
                     &node[nodesize - (rec + 1) * 2]);
-                if (rec_off > nodesize) {
+                if (rec_off + sizeof(hfs_btree_key_ext) > nodesize) {
                     tsk_error_set_errno(TSK_ERR_FS_GENFS);
                     tsk_error_set_errstr
                         ("hfs_ext_find_extent_record_attr: offset of record %d in index node %d too large (%d vs %"