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

◆ CreateFromBinaryForm()

static GenericAce System.Security.AccessControl.GenericAce.CreateFromBinaryForm ( byte[] binaryForm,
int offset )
inlinestaticinherited

Definition at line 176 of file GenericAce.cs.

177 {
178 VerifyHeader(binaryForm, offset);
179 AceType aceType = (AceType)binaryForm[offset];
180 GenericAce genericAce;
181 if (aceType == AceType.AccessAllowed || aceType == AceType.AccessDenied || aceType == AceType.SystemAudit || aceType == AceType.SystemAlarm || aceType == AceType.AccessAllowedCallback || aceType == AceType.AccessDeniedCallback || aceType == AceType.SystemAuditCallback || aceType == AceType.SystemAlarmCallback)
182 {
183 if (CommonAce.ParseBinaryForm(binaryForm, offset, out var qualifier, out var accessMask, out var sid, out var isCallback, out var opaque))
184 {
185 AceFlags flags = (AceFlags)binaryForm[offset + 1];
186 genericAce = new CommonAce(flags, qualifier, accessMask, sid, isCallback, opaque);
187 goto IL_0154;
188 }
189 }
190 else if (aceType == AceType.AccessAllowedObject || aceType == AceType.AccessDeniedObject || aceType == AceType.SystemAuditObject || aceType == AceType.SystemAlarmObject || aceType == AceType.AccessAllowedCallbackObject || aceType == AceType.AccessDeniedCallbackObject || aceType == AceType.SystemAuditCallbackObject || aceType == AceType.SystemAlarmCallbackObject)
191 {
192 if (ObjectAce.ParseBinaryForm(binaryForm, offset, out var qualifier2, out var accessMask2, out var sid2, out var objectFlags, out var objectAceType, out var inheritedObjectAceType, out var isCallback2, out var opaque2))
193 {
194 AceFlags aceFlags = (AceFlags)binaryForm[offset + 1];
195 genericAce = new ObjectAce(aceFlags, qualifier2, accessMask2, sid2, objectFlags, objectAceType, inheritedObjectAceType, isCallback2, opaque2);
196 goto IL_0154;
197 }
198 }
199 else if (aceType == AceType.AccessAllowedCompound)
200 {
201 if (CompoundAce.ParseBinaryForm(binaryForm, offset, out var accessMask3, out var compoundAceType, out var sid3))
202 {
203 AceFlags flags2 = (AceFlags)binaryForm[offset + 1];
204 genericAce = new CompoundAce(flags2, accessMask3, compoundAceType, sid3);
205 goto IL_0154;
206 }
207 }
208 else
209 {
210 AceFlags flags3 = (AceFlags)binaryForm[offset + 1];
211 byte[] array = null;
212 int num = binaryForm[offset + 2] + (binaryForm[offset + 3] << 8);
213 if (num % 4 == 0)
214 {
215 int num2 = num - 4;
216 if (num2 > 0)
217 {
218 array = new byte[num2];
219 for (int i = 0; i < num2; i++)
220 {
221 array[i] = binaryForm[offset + num - num2 + i];
222 }
223 }
224 genericAce = new CustomAce(aceType, flags3, array);
225 goto IL_0154;
226 }
227 }
228 goto IL_01a8;
229 IL_01a8:
231 IL_0154:
232 if ((genericAce is ObjectAce || binaryForm[offset + 2] + (binaryForm[offset + 3] << 8) == genericAce.BinaryLength) && (!(genericAce is ObjectAce) || binaryForm[offset + 2] + (binaryForm[offset + 3] << 8) == genericAce.BinaryLength || binaryForm[offset + 2] + (binaryForm[offset + 3] << 8) - 32 == genericAce.BinaryLength))
233 {
234 return genericAce;
235 }
236 goto IL_01a8;
237 }
static string ArgumentException_InvalidAceBinaryForm
Definition SR.cs:64
Definition SR.cs:7
static void VerifyHeader(byte[] binaryForm, int offset)
GenericAce(AceType type, AceFlags flags)

References System.Security.AccessControl.GenericAce.AceFlags, System.Security.AccessControl.GenericAce.AceType, System.SR.ArgumentException_InvalidAceBinaryForm, System.array, System.Security.AccessControl.GenericAce.BinaryLength, System.offset, System.Security.AccessControl.CommonAce.ParseBinaryForm(), System.Security.AccessControl.ObjectAce.ParseBinaryForm(), System.Security.AccessControl.CompoundAce.ParseBinaryForm(), and System.Security.AccessControl.GenericAce.VerifyHeader().

Referenced by System.Security.AccessControl.GenericAce.Copy(), and System.Security.AccessControl.RawAcl.SetBinaryForm().