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

◆ ModifyAudit()

override bool System.Security.AccessControl.CommonObjectSecurity.ModifyAudit ( AccessControlModification modification,
AuditRule rule,
out bool modified )
inlineprotectedinherited

Definition at line 217 of file CommonObjectSecurity.cs.

218 {
219 if (rule == null)
220 {
221 throw new ArgumentNullException("rule");
222 }
223 WriteLock();
224 try
225 {
226 bool flag = true;
227 if (_securityDescriptor.SystemAcl == null)
228 {
229 if (modification == AccessControlModification.Remove || modification == AccessControlModification.RemoveAll || modification == AccessControlModification.RemoveSpecific)
230 {
231 modified = false;
232 return flag;
233 }
234 _securityDescriptor.SystemAcl = new SystemAcl(base.IsContainer, base.IsDS, GenericAcl.AclRevision, 1);
235 _securityDescriptor.AddControlFlags(ControlFlags.SystemAclPresent);
236 }
237 SecurityIdentifier sid = (SecurityIdentifier)rule.IdentityReference.Translate(typeof(SecurityIdentifier));
238 switch (modification)
239 {
241 _securityDescriptor.SystemAcl.AddAudit(rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags);
242 break;
244 _securityDescriptor.SystemAcl.SetAudit(rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags);
245 break;
246 case AccessControlModification.Reset:
247 _securityDescriptor.SystemAcl.SetAudit(rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags);
248 break;
249 case AccessControlModification.Remove:
250 flag = _securityDescriptor.SystemAcl.RemoveAudit(rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags);
251 break;
252 case AccessControlModification.RemoveAll:
253 flag = _securityDescriptor.SystemAcl.RemoveAudit(AuditFlags.Success | AuditFlags.Failure, sid, -1, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None);
254 if (!flag)
255 {
256 throw new InvalidOperationException();
257 }
258 break;
259 case AccessControlModification.RemoveSpecific:
260 _securityDescriptor.SystemAcl.RemoveAuditSpecific(rule.AuditFlags, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags);
261 break;
262 default:
263 throw new ArgumentOutOfRangeException("modification", System.SR.ArgumentOutOfRange_Enum);
264 }
265 modified = flag;
266 base.AuditRulesModified |= modified;
267 return flag;
268 }
269 finally
270 {
271 WriteUnlock();
272 }
273 }
static string ArgumentOutOfRange_Enum
Definition SR.cs:18
Definition SR.cs:7
readonly CommonSecurityDescriptor _securityDescriptor
void AddAudit(AuditFlags auditFlags, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
Definition SystemAcl.cs:27
void RemoveAuditSpecific(AuditFlags auditFlags, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
Definition SystemAcl.cs:44
bool RemoveAudit(AuditFlags auditFlags, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
Definition SystemAcl.cs:39
void SetAudit(AuditFlags auditFlags, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
Definition SystemAcl.cs:33

References System.Security.AccessControl.ObjectSecurity< T >._securityDescriptor, System.Security.AccessControl.AuthorizationRule.AccessMask, System.Security.AccessControl.GenericAcl.AclRevision, System.Security.AccessControl.SystemAcl.AddAudit(), System.Security.AccessControl.CommonSecurityDescriptor.AddControlFlags(), System.SR.ArgumentOutOfRange_Enum, System.Security.AccessControl.AuditRule< T >.AuditFlags, System.Security.AccessControl.AuthorizationRule.IdentityReference, System.Security.AccessControl.AuthorizationRule.InheritanceFlags, System.Security.AccessControl.AuthorizationRule.PropagationFlags, System.Security.AccessControl.SystemAcl.RemoveAudit(), System.Security.AccessControl.SystemAcl.RemoveAuditSpecific(), System.Security.AccessControl.SystemAcl.SetAudit(), System.Security.AccessControl.CommonSecurityDescriptor.SystemAcl, System.Security.AccessControl.SystemAcl, System.Security.Principal.IdentityReference.Translate(), System.Security.AccessControl.ObjectSecurity< T >.WriteLock(), and System.Security.AccessControl.ObjectSecurity< T >.WriteUnlock().

Referenced by System.Security.AccessControl.CommonObjectSecurity.AddAuditRule(), System.Security.AccessControl.CommonObjectSecurity.RemoveAuditRule(), System.Security.AccessControl.CommonObjectSecurity.RemoveAuditRuleAll(), System.Security.AccessControl.CommonObjectSecurity.RemoveAuditRuleSpecific(), and System.Security.AccessControl.CommonObjectSecurity.SetAuditRule().