提交 0cc233ea 编写于 作者: J James Bellinger

Bug fix: Merging occurs after sorting ACE groups by SecurityIdentifier not...

Bug fix: Merging occurs after sorting ACE groups by SecurityIdentifier not before. Added a unit test for this behavior.

Also, fixed the namespace for the ObjectAce unit test.
上级 6cfe403f
......@@ -136,8 +136,8 @@ namespace System.Security.AccessControl
is_canonical = TestCanonicity ();
if (IsCanonical) {
MergeExplicitAces ();
ApplyCanonicalSortToExplicitAces ();
MergeExplicitAces ();
}
}
......
......@@ -154,6 +154,35 @@ namespace MonoTests.System.Security.AccessControl
Assert.AreEqual (0, dacl.Count);
}
[Test]
public void MergesAfterSortingForMultipleSids ()
{
SecurityIdentifier adminSid = new SecurityIdentifier
(WellKnownSidType.BuiltinAdministratorsSid, null); // S-1-5-32-544
SecurityIdentifier userSid = new SecurityIdentifier
(WellKnownSidType.BuiltinUsersSid, null); // S-1-5-32-545
RawAcl acl = MakeRawAcl(new GenericAce[] {
new CommonAce (AceFlags.None, AceQualifier.AccessDenied, 1, userSid, false, null),
new CommonAce (AceFlags.None, AceQualifier.AccessDenied, 2, adminSid, false, null),
new CommonAce (AceFlags.None, AceQualifier.AccessDenied, 4, userSid, false, null),
new CommonAce (AceFlags.None, AceQualifier.AccessDenied, 8, adminSid, false, null),
});
DiscretionaryAcl dacl = new DiscretionaryAcl (false, false, acl);
Assert.IsTrue (dacl.IsCanonical);
Assert.AreEqual (2, dacl.Count);
CommonAce adminAce = (CommonAce)dacl [0];
Assert.AreEqual (adminSid, adminAce.SecurityIdentifier);
Assert.AreEqual (10, adminAce.AccessMask);
CommonAce userAce = (CommonAce)dacl [1];
Assert.AreEqual (userSid, userAce.SecurityIdentifier);
Assert.AreEqual (5, userAce.AccessMask);
}
[Test]
public void DetectsNonCanonicalAndDoesNotMerge ()
{
......
......@@ -11,7 +11,7 @@ using System.Security.AccessControl;
using System.Security.Principal;
using NUnit.Framework;
namespace AccessControl
namespace MonoTests.System.Security.AccessControl
{
[TestFixture]
public class ObjectAceTest
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册