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

◆ ParseBinaryForm()

static bool System.Security.AccessControl.CommonAce.ParseBinaryForm ( byte[] binaryForm,
int offset,
out AceQualifier qualifier,
out int accessMask,
[NotNullWhen(true)] out SecurityIdentifier sid,
out bool isCallback,
out byte[] opaque )
inlinestaticpackage

Definition at line 29 of file CommonAce.cs.

30 {
31 GenericAce.VerifyHeader(binaryForm, offset);
33 {
34 AceType aceType = (AceType)binaryForm[offset];
35 if (aceType == AceType.AccessAllowed || aceType == AceType.AccessDenied || aceType == AceType.SystemAudit || aceType == AceType.SystemAlarm)
36 {
37 isCallback = false;
38 }
39 else
40 {
41 if (aceType != AceType.AccessAllowedCallback && aceType != AceType.AccessDeniedCallback && aceType != AceType.SystemAuditCallback && aceType != AceType.SystemAlarmCallback)
42 {
43 goto IL_0114;
44 }
45 isCallback = true;
46 }
47 if (aceType == AceType.AccessAllowed || aceType == AceType.AccessAllowedCallback)
48 {
49 qualifier = AceQualifier.AccessAllowed;
50 }
51 else if (aceType == AceType.AccessDenied || aceType == AceType.AccessDeniedCallback)
52 {
53 qualifier = AceQualifier.AccessDenied;
54 }
55 else if (aceType == AceType.SystemAudit || aceType == AceType.SystemAuditCallback)
56 {
57 qualifier = AceQualifier.SystemAudit;
58 }
59 else
60 {
61 if (aceType != AceType.SystemAlarm && aceType != AceType.SystemAlarmCallback)
62 {
63 goto IL_0114;
64 }
65 qualifier = AceQualifier.SystemAlarm;
66 }
67 int num = offset + 4;
68 int num2 = 0;
69 accessMask = binaryForm[num] + (binaryForm[num + 1] << 8) + (binaryForm[num + 2] << 16) + (binaryForm[num + 3] << 24);
70 num2 += 4;
71 sid = new SecurityIdentifier(binaryForm, num + num2);
72 opaque = null;
73 int num3 = (binaryForm[offset + 3] << 8) + binaryForm[offset + 2];
74 if (num3 % 4 == 0)
75 {
76 int num4 = num3 - 4 - 4 - (byte)sid.BinaryLength;
77 if (num4 > 0)
78 {
79 opaque = new byte[num4];
80 for (int i = 0; i < num4; i++)
81 {
82 opaque[i] = binaryForm[offset + num3 - num4 + i];
83 }
84 }
85 return true;
86 }
87 }
88 goto IL_0114;
89 IL_0114:
90 qualifier = AceQualifier.AccessAllowed;
91 accessMask = 0;
92 sid = null;
93 isCallback = false;
94 opaque = null;
95 return false;
96 }
GenericAce(AceType type, AceFlags flags)
SecurityIdentifier SecurityIdentifier
Definition KnownAce.cs:25

References System.Security.Principal.SecurityIdentifier.MinBinaryLength, System.offset, System.Security.AccessControl.KnownAce.SecurityIdentifier, and System.Security.AccessControl.GenericAce.VerifyHeader().

Referenced by System.Security.AccessControl.GenericAce.CreateFromBinaryForm().