[Freeipa-devel] [PATCH] Handle circular groupings in memberOf plug-in

Nathan Kinder nkinder at redhat.com
Fri Feb 15 00:29:02 UTC 2008


There were a couple of issues that caused circular groupings to crash in the
memberOf plug-in.

The first issue was caused by improper checking during a fix-up operation.
When a change in membership for a group needs to be processed, the
memberOf plug-in starts processing "member" values, tracing through nested
groups as needed to update all subordinate members.  Once it finds a 
subordinate
member, it updates it's "memberOf" attribute, then it performs a 
"fix-up" operation.
This fix-up operation looks for any other groups in your database that 
have the
group whose membership is being modified as a member.  It's essentially 
looking
for parent groups.  This fix-up operation was always being performed, 
but there
are a few cases where we do not want to do it.  These cases are when the 
updating
of the "memberOf" value failed as well as when we just added a 
"memberOf" value to ourselves.

The other problem was revealed after fixing the first issue.  The memberOf
plug-in uses a linked list to keep track of groups we've seen when 
traversing
through groups to update membership.  We were always adding the group being
directly modified in the web interface when we should have been adding the
nested groups to this list.  This caused us to not be able to detect 
indirect loops.

With the changes made in the patch, I'm able to do the following tests 
without
crashing ns-slapd (all of which would have caused crashes before my fix, 
or were
masked by the first part of the fix):

1 - Create a group with itself as a member.
2 - Create two groups with each other as members.
3 - Create a group like test 1, then create a new group with the first 
group as
    a member.
4 - Create three groups that are nested (1->2->3), then add the first 
group as a
    member of the third group.

-NGK
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeipa-636-memberofcrash.patch
Type: text/x-patch
Size: 2182 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20080214/c6dd23ed/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3241 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/freeipa-devel/attachments/20080214/c6dd23ed/attachment-0001.bin>


More information about the Freeipa-devel mailing list