diff --git a/ntfsprogs/ntfsfix.c b/ntfsprogs/ntfsfix.c index 48e8a782..da92fadc 100644 --- a/ntfsprogs/ntfsfix.c +++ b/ntfsprogs/ntfsfix.c @@ -784,7 +784,9 @@ static ATTR_RECORD *find_unnamed_attr(MFT_RECORD *mrec, ATTR_TYPES type) /* fetch the requested attribute */ offset = le16_to_cpu(mrec->attrs_offset); a = (ATTR_RECORD*)((char*)mrec + offset); - while ((offset < le32_to_cpu(mrec->bytes_in_use)) + while (((offset + le32_to_cpu(a->length)) + < le32_to_cpu(mrec->bytes_in_use)) + && !(le32_to_cpu(a->length) & 7) && (a->type != AT_END) && ((a->type != type) || a->name_length)) { offset += le32_to_cpu(a->length);