Bugzilla – Bug 316037
[PATCH] monodis doesn't disassemble security attributes
Last modified: 2007-09-15 21:24:23 UTC
---- Reported by sebastien@ximian.com 2004-09-15 14:44:10 MST ---- Description of Problem: monodis doesn't disassemble security attributes encoded in the assembly metadata. Steps to reproduce the problem: 1. Compile the following source code with CSC (or a Marek's patch for MCS with similar results). using System; using System.Security; using System.Security.Permissions; [assembly: SecurityPermission (SecurityAction.RequestMinimum, Execution=true)] [assembly: SecurityPermission (SecurityAction.RequestOptional, Unrestricted=true)] [assembly: SecurityPermission (SecurityAction.RequestRefuse, SkipVerification=true)] [SecurityPermission (SecurityAction.Demand, ControlAppDomain=true)] public class Program { [SecurityPermission (SecurityAction.Demand, ControlPrincipal=true)] static public void Main (string[] args) { Console.WriteLine ("Hello Mono!"); } } 2. Use monodis to see the IL 3. Compare IL with ildasm (windows) output Actual Results: Assembly code is disassembled. Permissions sets are missing. Expected Results: .assembly XXX should contains .permissionset reqmin = (XX ... XX) .permissionset reqopt = (XX ... XX) .permissionset reqrefuse = (XX ... XX) .class ... Program ... should contains .permissionset demand = (XX ... XX) .method ... Main ... should contains .permissionset demand = (XX ... XX) How often does this happen? Always Additional Information: * Current MCS patch won't show all permission sets. * Mono's ilasm doesn't support .permissionset - see #66033 * Fx 2.0 has a friendler syntax for permission sets http://blogs.msdn.com/shawnfa/archive/2004/08/31/223630.aspx ---- Additional Comments From sebastien@ximian.com 2004-09-15 16:38:57 MST ---- If the sample is compiled with CSC we get the following output using --decl option. So monodis can decode the information. There are just not part of the generated IL. # monodis --declsec https://bugzilla.novell.com/show_bug.cgi?id=MONO62358.exe DeclSecurity Table (1..5) 1: Demand on MethodDef 1: <PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="ControlPrincipal"/> </PermissionSet> 2: RequestMinimum on Assembly 1: <PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Execution"/> </PermissionSet> 3: RequestOptional on Assembly 1: <PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true"/> </PermissionSet> 4: RequestRefuse on Assembly 1: <PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="SkipVerification"/> </PermissionSet> 5: Demand on TypeDef 2: <PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="ControlAppDomain"/> </PermissionSet> ---- Additional Comments From sebastien@ximian.com 2004-09-16 09:51:03 MST ---- Created an attachment (id=166786) monodis.patch ---- Additional Comments From sebastien@ximian.com 2004-09-16 09:53:48 MST ---- Created an attachment (id=166787) tabledefs.patch ---- Additional Comments From sebastien@ximian.com 2004-09-16 09:57:14 MST ---- Patches to make monodis output permissionset correctly and add support for new 2.0 security actions. The next two files are the test files I used (1.x and 2.0). For now they must be compiled with CSC (so the generated assemblies contains the properly encoded security attributes). ---- Additional Comments From sebastien@ximian.com 2004-09-16 09:58:03 MST ---- Created an attachment (id=166788) decl_all.cs ---- Additional Comments From sebastien@ximian.com 2004-09-16 09:58:27 MST ---- Created an attachment (id=166789) decl_v2.cs ---- Additional Comments From sebastien@ximian.com 2004-09-16 16:30:28 MST ---- Commited to CVS. Imported an attachment (id=166786) Imported an attachment (id=166787) Imported an attachment (id=166788) Imported an attachment (id=166789) Unknown operating system unknown. Setting to default OS "Other".