Improved dumping SDS entries: stop at bogus values instead of crashing and

don't stop at empty entries
edge.strict_endians
szaka 2006-01-29 01:24:24 +00:00
parent bbb3e160dd
commit 0130863e72
1 changed files with 9 additions and 1 deletions

View File

@ -1110,7 +1110,15 @@ static void ntfs_dump_sds(ATTR_RECORD *attr, ntfs_inode *ni)
sd = sds;
while (sd->length && sd->length != 32 && sd->hash) {
/*
* FIXME: The right way is based on the indexes, so we couldn't
* miss real entries. For now, dump until it makes sense.
*/
while (sd->length && sd->hash &&
le64_to_cpu(sd->offset) < (u64)na->data_size &&
le32_to_cpu(sd->length) < (u64)na->data_size &&
le64_to_cpu(sd->offset) +
le32_to_cpu(sd->length) < (u64)na->data_size) {
ntfs_dump_sds_entry(sd);
sd = (SECURITY_DESCRIPTOR_HEADER *)((char *)sd +
(cpu_to_le32(sd->length + 0x0F) &