Bugzilla – Bug 317527
[PATCH] MCS doesn't union unrestricted permission correctly in a PermissionSet
Last modified: 2007-09-15 21:24:23 UTC
---- Reported by sebastien@ximian.com 2005-03-23 19:22:57 MST ---- Description of Problem: MCS doesn't union unrestricted permission correctly in a PermissionSet. Steps to reproduce the problem: 1. Compile the sample using System; using System.Security; using System.Security.Permissions; [EnvironmentPermission (SecurityAction.PermitOnly, Unrestricted = true)] [FileIOPermission (SecurityAction.PermitOnly, Unrestricted = true)] class Program { static void Main () { EnvironmentPermission ep = new EnvironmentPermission (PermissionState.Unrestricted); FileIOPermission fiop = new FileIOPermission (PermissionState.Unrestricted); PermissionSet ps = new PermissionSet (PermissionState.None); ps.AddPermission (ep); ps.AddPermission (fiop); Console.WriteLine (ps); } } 2. Execute it % mono unionunrestricted.exe <PermissionSet class="System.Security.PermissionSet" version="1"> <IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true"/> <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true"/> </PermissionSet> 3. The resulting permission set is union-ed correctly. Now disassemble the assembly with monodis Actual Results: ... .permissionset permitonly = ( 3C 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00 // <.P.e.r.m.i.s.s. 69 00 6F 00 6E 00 53 00 65 00 74 00 20 00 63 00 // i.o.n.S.e.t. .c. 6C 00 61 00 73 00 73 00 3D 00 22 00 53 00 79 00 // l.a.s.s.=.".S.y. 73 00 74 00 65 00 6D 00 2E 00 53 00 65 00 63 00 // s.t.e.m...S.e.c. 75 00 72 00 69 00 74 00 79 00 2E 00 50 00 65 00 // u.r.i.t.y...P.e. 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n. 53 00 65 00 74 00 22 00 0A 00 20 00 20 00 20 00 // S.e.t."... . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . . 20 00 20 00 20 00 20 00 76 00 65 00 72 00 73 00 // . . . .v.e.r.s. 69 00 6F 00 6E 00 3D 00 22 00 31 00 22 00 0A 00 // i.o.n.=.".1."... 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 55 00 // . . . . . . .U. 6E 00 72 00 65 00 73 00 74 00 72 00 69 00 63 00 // n.r.e.s.t.r.i.c. 74 00 65 00 64 00 3D 00 22 00 74 00 72 00 75 00 // t.e.d.=.".t.r.u. 65 00 22 00 2F 00 3E 00 0A 00 ) // e."./.>... ... Expected Results: ... .permissionset permitonly = ( 3C 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00 // <.P.e.r.m.i.s.s. 69 00 6F 00 6E 00 53 00 65 00 74 00 20 00 63 00 // i.o.n.S.e.t. .c. 6C 00 61 00 73 00 73 00 3D 00 22 00 53 00 79 00 // l.a.s.s.=.".S.y. 73 00 74 00 65 00 6D 00 2E 00 53 00 65 00 63 00 // s.t.e.m...S.e.c. 75 00 72 00 69 00 74 00 79 00 2E 00 50 00 65 00 // u.r.i.t.y...P.e. 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n. 53 00 65 00 74 00 22 00 0A 00 20 00 20 00 20 00 // S.e.t."... . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . . 20 00 20 00 20 00 20 00 76 00 65 00 72 00 73 00 // . . . .v.e.r.s. 69 00 6F 00 6E 00 3D 00 22 00 31 00 22 00 3E 00 // i.o.n.=.".1.".>. 0A 00 20 00 20 00 20 00 3C 00 49 00 50 00 65 00 // .. . . .<.I.P.e. 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n. 20 00 63 00 6C 00 61 00 73 00 73 00 3D 00 22 00 // .c.l.a.s.s.=.". 53 00 79 00 73 00 74 00 65 00 6D 00 2E 00 53 00 // S.y.s.t.e.m...S. 65 00 63 00 75 00 72 00 69 00 74 00 79 00 2E 00 // e.c.u.r.i.t.y... 50 00 65 00 72 00 6D 00 69 00 73 00 73 00 69 00 // P.e.r.m.i.s.s.i. 6F 00 6E 00 73 00 2E 00 45 00 6E 00 76 00 69 00 // o.n.s...E.n.v.i. 72 00 6F 00 6E 00 6D 00 65 00 6E 00 74 00 50 00 // r.o.n.m.e.n.t.P. 65 00 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 // e.r.m.i.s.s.i.o. 6E 00 2C 00 20 00 6D 00 73 00 63 00 6F 00 72 00 // n.,. .m.s.c.o.r. 6C 00 69 00 62 00 2C 00 20 00 56 00 65 00 72 00 // l.i.b.,. .V.e.r. 73 00 69 00 6F 00 6E 00 3D 00 31 00 2E 00 30 00 // s.i.o.n.=.1...0. 2E 00 35 00 30 00 30 00 30 00 2E 00 30 00 2C 00 // ..5.0.0.0...0.,. 20 00 43 00 75 00 6C 00 74 00 75 00 72 00 65 00 // .C.u.l.t.u.r.e. 3D 00 6E 00 65 00 75 00 74 00 72 00 61 00 6C 00 // =.n.e.u.t.r.a.l. 2C 00 20 00 50 00 75 00 62 00 6C 00 69 00 63 00 // ,. .P.u.b.l.i.c. 4B 00 65 00 79 00 54 00 6F 00 6B 00 65 00 6E 00 // K.e.y.T.o.k.e.n. 3D 00 62 00 37 00 37 00 61 00 35 00 63 00 35 00 // =.b.7.7.a.5.c.5. 36 00 31 00 39 00 33 00 34 00 65 00 30 00 38 00 // 6.1.9.3.4.e.0.8. 39 00 22 00 0A 00 20 00 20 00 20 00 20 00 20 00 // 9."... . . . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . . 20 00 20 00 20 00 76 00 65 00 72 00 73 00 69 00 // . . .v.e.r.s.i. 6F 00 6E 00 3D 00 22 00 31 00 22 00 0A 00 20 00 // o.n.=.".1."... . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 55 00 // . . . . . . .U. 6E 00 72 00 65 00 73 00 74 00 72 00 69 00 63 00 // n.r.e.s.t.r.i.c. 74 00 65 00 64 00 3D 00 22 00 74 00 72 00 75 00 // t.e.d.=.".t.r.u. 65 00 22 00 2F 00 3E 00 0A 00 20 00 20 00 20 00 // e."./.>... . . . 3C 00 49 00 50 00 65 00 72 00 6D 00 69 00 73 00 // <.I.P.e.r.m.i.s. 73 00 69 00 6F 00 6E 00 20 00 63 00 6C 00 61 00 // s.i.o.n. .c.l.a. 73 00 73 00 3D 00 22 00 53 00 79 00 73 00 74 00 // s.s.=.".S.y.s.t. 65 00 6D 00 2E 00 53 00 65 00 63 00 75 00 72 00 // e.m...S.e.c.u.r. 69 00 74 00 79 00 2E 00 50 00 65 00 72 00 6D 00 // i.t.y...P.e.r.m. 69 00 73 00 73 00 69 00 6F 00 6E 00 73 00 2E 00 // i.s.s.i.o.n.s... 46 00 69 00 6C 00 65 00 49 00 4F 00 50 00 65 00 // F.i.l.e.I.O.P.e. 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n. 2C 00 20 00 6D 00 73 00 63 00 6F 00 72 00 6C 00 // ,. .m.s.c.o.r.l. 69 00 62 00 2C 00 20 00 56 00 65 00 72 00 73 00 // i.b.,. .V.e.r.s. 69 00 6F 00 6E 00 3D 00 31 00 2E 00 30 00 2E 00 // i.o.n.=.1...0... 35 00 30 00 30 00 30 00 2E 00 30 00 2C 00 20 00 // 5.0.0.0...0.,. . 43 00 75 00 6C 00 74 00 75 00 72 00 65 00 3D 00 // C.u.l.t.u.r.e.=. 6E 00 65 00 75 00 74 00 72 00 61 00 6C 00 2C 00 // n.e.u.t.r.a.l.,. 20 00 50 00 75 00 62 00 6C 00 69 00 63 00 4B 00 // .P.u.b.l.i.c.K. 65 00 79 00 54 00 6F 00 6B 00 65 00 6E 00 3D 00 // e.y.T.o.k.e.n.=. 62 00 37 00 37 00 61 00 35 00 63 00 35 00 36 00 // b.7.7.a.5.c.5.6. 31 00 39 00 33 00 34 00 65 00 30 00 38 00 39 00 // 1.9.3.4.e.0.8.9. 22 00 0A 00 20 00 20 00 20 00 20 00 20 00 20 00 // "... . . . . . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . . 20 00 20 00 76 00 65 00 72 00 73 00 69 00 6F 00 // . .v.e.r.s.i.o. 6E 00 3D 00 22 00 31 00 22 00 0A 00 20 00 20 00 // n.=.".1."... . . 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 // . . . . . . . . 20 00 20 00 20 00 20 00 20 00 20 00 55 00 6E 00 // . . . . . .U.n. 72 00 65 00 73 00 74 00 72 00 69 00 63 00 74 00 // r.e.s.t.r.i.c.t. 65 00 64 00 3D 00 22 00 74 00 72 00 75 00 65 00 // e.d.=.".t.r.u.e. 22 00 2F 00 3E 00 0A 00 3C 00 2F 00 50 00 65 00 // "./.>...<./.P.e. 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n. 53 00 65 00 74 00 3E 00 0A 00 ) // S.e.t.>... ... How often does this happen? Always Additional Information: See patch ---- Additional Comments From sebastien@ximian.com 2005-03-23 19:23:39 MST ---- Created an attachment (id=167617) attribute.diff ---- Additional Comments From sebastien@ximian.com 2005-03-30 15:47:29 MST ---- fixed in SVN Imported an attachment (id=167617)