Permission grants and stackwalk

Philipp Henkel <[email protected]>
Newsgroups gmane.comp.windows.devel.dotnet.rotor
Message-ID <[email protected]>
Hello,
I tried to get an overview of how the permissions of a piece of code are
calculated.  I enhanced the common equation for the grant set of an
assembly to
take the permissions of the application domain in account.
I'm also providing some pseudo code to illustrate what a stackwalk does.
It should be a logical view of what is happening while walking over the
stack.

Did I overlook something? I'm looking forward to your comments or
suggestions.


**************************************
**************************************
Naming conventions for the permission sets:
MAX: permissions maximum allowed by the policy
MIN: permissions the assembly requires for its operation
OPT:  permissions the  assembly would like to have, but are not necessary
REF: permissions that should not be granted to the assembly
DOM: permissions granted to the application domain
GRANT: granted permission set (result)

Equation (in case of an unmodified stackwalk):
GRANT = ((MAX INTERSECT (MIN U OPT))  - REF) INTERSECT DOM

**************************************

Pseudo code for illustration of the stackwalk:

FUNCTION walk: (stack, permissionset) -> (stack, permissionset)
DEFINITION walk (stack, demandset) ==
  grant = (MAX INTERSECT (MIN U OPT)) - REF
  permset = applyModifications(demandset)
  IF permset SUBSETOF grant
    IF permset SUBSETOF DOM
      walk(POP(stack), permset)
    ELSE
      throw(SecurityException "Denied by AppDomain")
    FI
  ELSE
    throw(SecurityException "Denied by Assembly or Policy")
  FI


The function "applyModifications" applies the stackwalk modifications to
the demanded permissionset. If a denied permission is demanded for
example the stackwalk is stopped immediatly and exception is thrown.
Assertions remove permissions from the demand set.
**************************************
**************************************

Thank you in advance!

Regards,
Philipp Henkel

===================================
This list is hosted by DevelopMentor®  http://www.develop.com
NEW! ASP.NET courses you may be interested in:

2 Days of ASP.NET, 29 Sept 2003, in Redmond
http://www.develop.com/courses/2daspdotnet

Guerrilla ASP.NET, 13 Oct 2003, in Boston
http://www.develop.com/courses/gaspdotnet

View archives and manage your subscription(s) at http://discuss.develop.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.