Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RawSecurityDescriptor() [3/3]

System.Security.AccessControl.RawSecurityDescriptor.RawSecurityDescriptor ( byte[] binaryForm,
int offset )
inline

Definition at line 107 of file RawSecurityDescriptor.cs.

108 {
109 if (binaryForm == null)
110 {
111 throw new ArgumentNullException("binaryForm");
112 }
113 if (offset < 0)
114 {
115 throw new ArgumentOutOfRangeException("offset", System.SR.ArgumentOutOfRange_NeedNonNegNum);
116 }
117 if (binaryForm.Length - offset < 20)
118 {
119 throw new ArgumentOutOfRangeException("binaryForm", System.SR.ArgumentOutOfRange_ArrayTooSmall);
120 }
121 if (binaryForm[offset] != GenericSecurityDescriptor.Revision)
122 {
123 throw new ArgumentOutOfRangeException("binaryForm", System.SR.AccessControl_InvalidSecurityDescriptorRevision);
124 }
125 byte resourceManagerControl = binaryForm[offset + 1];
126 ControlFlags controlFlags = (ControlFlags)(binaryForm[offset + 2] + (binaryForm[offset + 3] << 8));
127 if ((controlFlags & ControlFlags.SelfRelative) == 0)
128 {
130 }
131 int num = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 4);
132 SecurityIdentifier owner = ((num == 0) ? null : new SecurityIdentifier(binaryForm, offset + num));
133 int num2 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 8);
134 SecurityIdentifier group = ((num2 == 0) ? null : new SecurityIdentifier(binaryForm, offset + num2));
135 int num3 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 12);
136 RawAcl systemAcl = (((controlFlags & ControlFlags.SystemAclPresent) == 0 || num3 == 0) ? null : new RawAcl(binaryForm, offset + num3));
137 int num4 = GenericSecurityDescriptor.UnmarshalInt(binaryForm, offset + 16);
138 CreateFromParts(controlFlags, owner, group, systemAcl, ((controlFlags & ControlFlags.DiscretionaryAclPresent) == 0 || num4 == 0) ? null : new RawAcl(binaryForm, offset + num4));
139 if ((controlFlags & ControlFlags.RMControlValid) != 0)
140 {
141 ResourceManagerControl = resourceManagerControl;
142 }
143 }
static string AccessControl_InvalidSecurityDescriptorRevision
Definition SR.cs:26
static string AccessControl_InvalidSecurityDescriptorSelfRelativeForm
Definition SR.cs:28
static string ArgumentOutOfRange_ArrayTooSmall
Definition SR.cs:74
static string ArgumentOutOfRange_NeedNonNegNum
Definition SR.cs:32
Definition SR.cs:7
void CreateFromParts(ControlFlags flags, SecurityIdentifier owner, SecurityIdentifier group, RawAcl systemAcl, RawAcl discretionaryAcl)

References System.SR.AccessControl_InvalidSecurityDescriptorRevision, System.SR.AccessControl_InvalidSecurityDescriptorSelfRelativeForm, System.SR.ArgumentOutOfRange_ArrayTooSmall, System.SR.ArgumentOutOfRange_NeedNonNegNum, System.Security.AccessControl.RawSecurityDescriptor.ControlFlags, System.Security.AccessControl.RawSecurityDescriptor.CreateFromParts(), System.offset, System.Security.AccessControl.RawSecurityDescriptor.ResourceManagerControl, System.Security.AccessControl.GenericSecurityDescriptor.Revision, and System.Security.AccessControl.GenericSecurityDescriptor.UnmarshalInt().