server: Owner and group SIDs in security descriptors are optional in many server calls. So print "<not present>" when they aren't provided instead of "<invalid sid>".
diff --git a/server/trace.c b/server/trace.c index 4471d6f..e0a2e96 100644 --- a/server/trace.c +++ b/server/trace.c
@@ -711,12 +711,18 @@ fprintf( stderr, ",owner=" ); if ((sd->owner_len > FIELD_OFFSET(SID, SubAuthority[255])) || (offset + sd->owner_len > size)) return; - dump_inline_sid( (const SID *)((const char *)sd + offset), sd->owner_len ); + if (sd->owner_len) + dump_inline_sid( (const SID *)((const char *)sd + offset), sd->owner_len ); + else + fprintf( stderr, "<not present>" ); offset += sd->owner_len; fprintf( stderr, ",group=" ); if ((sd->group_len > FIELD_OFFSET(SID, SubAuthority[255])) || (offset + sd->group_len > size)) return; - dump_inline_sid( (const SID *)((const char *)sd + offset), sd->group_len ); + if (sd->group_len) + dump_inline_sid( (const SID *)((const char *)sd + offset), sd->group_len ); + else + fprintf( stderr, "<not present>" ); offset += sd->group_len; fprintf( stderr, ",sacl=" ); if ((sd->sacl_len >= MAX_ACL_LEN) || (offset + sd->sacl_len > size))