//
// API for PermissionSets
//
public virtual void Assert(PermissionSet permSet, ref StackCrawlMark stackMark)
{
// Note: if the "AssertPermission" is not a permission that implements IUnrestrictedPermission
// you need to change the fourth parameter to a zero.
FrameSecurityDescriptor secObj = CodeAccessSecurityEngine.CheckNReturnSO(
CodeAccessSecurityEngine.AssertPermissionToken,
CodeAccessSecurityEngine.AssertPermission,
ref stackMark,
1,
1);
BCLDebug.Assert(secObj != null || !SecurityManager.SecurityEnabled, "Failure in SecurityRuntime.Assert() - secObj != null");
if (secObj == null)
{
if (SecurityManager.SecurityEnabled)
{
// Security: REQ_SQ flag is missing. Bad compiler ?
throw new ExecutionEngineException(Environment.GetResourceString("ExecutionEngine_MissingSecurityDescriptor"));
}
}
else
{
if (secObj.GetAssertions() != null)
{
throw new SecurityException(Environment.GetResourceString("Security_MustRevertOverride"));
}
secObj.SetAssert(permSet);
}
}