CS.SV.LINK_DEMAND.INHERITANCE

Type link demands require inheritance demands.

A link demand on a method or its declaring type requires the immediate caller of the method to have the specified permission. An inheritance demand on a method requires an overriding method to have the specified permission. An inheritance demand on a type requires a deriving class to have the specified permission.

Mitigation and prevention

To fix a violation of this rule, secure the type or the method with an inheritance demand for the same permission as the link demand.

Vulnerable code example

Copy
  using System;
  using System.Security.Permissions;
  
  namespace SecurityLibrary
  {
     [EnvironmentPermission(SecurityAction.LinkDemand, Read = "PATH")]
     public class TypesWithLinkDemands
     {
       public virtual void UnsecuredMethod() {}
 
       [EnvironmentPermission(SecurityAction.InheritanceDemand, Read = "PATH")]
       public virtual void SecuredMethod() { }
    }
 }

The following example shows a type that violates the rule.