From 0573a8ff53f9f20af71998453a79ff99c87c6b0b Mon Sep 17 00:00:00 2001 From: szaka Date: Sun, 13 Aug 2006 18:43:12 +0000 Subject: [PATCH] fix segfaults when SDS has absolute security descriptor --- ntfsprogs/ntfsinfo.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ntfsprogs/ntfsinfo.c b/ntfsprogs/ntfsinfo.c index 2e7985f0..c31b19e1 100644 --- a/ntfsprogs/ntfsinfo.c +++ b/ntfsprogs/ntfsinfo.c @@ -847,8 +847,20 @@ static void ntfs_dump_security_descriptor(SECURITY_DESCRIPTOR_ATTR *sec_desc, printf("%s\tRevision:\t\t %u\n", indent, sec_desc->revision); /* TODO: parse the flags */ - printf("%s\tControl:\t\t 0x%0x\n", indent, sec_desc->control); + printf("%s\tControl:\t\t 0x%04x\n", indent, sec_desc->control); + if (~sec_desc->control & SE_SELF_RELATIVE) { + + SECURITY_DESCRIPTOR *sd = (SECURITY_DESCRIPTOR *)sec_desc; + + printf("%s\tOwner SID pointer:\t %p\n", indent, sd->owner); + printf("%s\tGroup SID pointer:\t %p\n", indent, sd->group); + printf("%s\tSACL pointer:\t\t %p\n", indent, sd->sacl); + printf("%s\tDACL pointer:\t\t %p\n", indent, sd->dacl); + + return; + } + if (sec_desc->owner) { sid = ntfs_sid_to_mbs((SID *)((char *)sec_desc + le32_to_cpu(sec_desc->owner)), NULL, 0);