The Samba-Bugzilla – Attachment 4624 Details for
Bug 4296
with "ldap delete dn" group memberships should be cleaned up
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
same patch that cleanly applies to 3-4-test
bug-4296.patch (text/plain), 2.21 KB, created by
Guenther Deschner
on 2009-09-02 05:08:09 UTC
(
hide
)
Description:
same patch that cleanly applies to 3-4-test
Filename:
MIME Type:
Creator:
Guenther Deschner
Created:
2009-09-02 05:08:09 UTC
Size:
2.21 KB
patch
obsolete
>From 629c24ea3b47c5294faf189ecb3935c4ad3336a9 Mon Sep 17 00:00:00 2001 >From: =?utf-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org> >Date: Wed, 24 Jun 2009 00:33:44 +0200 >Subject: [PATCH] s3-pdb_ldap: Fix bug #4296: Clean up group membership while deleting a user. > >Note that this only is tried with editposix=yes. > >Guenther > >--- > source3/passdb/pdb_ldap.c | 46 +++++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 46 insertions(+), 0 deletions(-) > >diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c >index cf4889b..71d4030 100644 >--- a/source3/passdb/pdb_ldap.c >+++ b/source3/passdb/pdb_ldap.c >@@ -5187,6 +5187,18 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods, > return NT_STATUS_OK; > } > >+static NTSTATUS ldapsam_del_groupmem(struct pdb_methods *my_methods, >+ TALLOC_CTX *tmp_ctx, >+ uint32 group_rid, >+ uint32 member_rid); >+ >+static NTSTATUS ldapsam_enum_group_memberships(struct pdb_methods *methods, >+ TALLOC_CTX *mem_ctx, >+ struct samu *user, >+ DOM_SID **pp_sids, >+ gid_t **pp_gids, >+ size_t *p_num_groups); >+ > static NTSTATUS ldapsam_delete_user(struct pdb_methods *my_methods, TALLOC_CTX *tmp_ctx, struct samu *sam_acct) > { > struct ldapsam_privates *ldap_state = (struct ldapsam_privates *)my_methods->private_data; >@@ -5241,6 +5253,40 @@ static NTSTATUS ldapsam_delete_user(struct pdb_methods *my_methods, TALLOC_CTX * > return NT_STATUS_NO_MEMORY; > } > >+ /* try to remove memberships first */ >+ { >+ NTSTATUS status; >+ struct dom_sid *sids = NULL; >+ gid_t *gids = NULL; >+ size_t num_groups = 0; >+ int i; >+ uint32_t user_rid = pdb_get_user_rid(sam_acct); >+ >+ status = ldapsam_enum_group_memberships(my_methods, >+ tmp_ctx, >+ sam_acct, >+ &sids, >+ &gids, >+ &num_groups); >+ if (!NT_STATUS_IS_OK(status)) { >+ goto delete_dn; >+ } >+ >+ for (i=0; i < num_groups; i++) { >+ >+ uint32_t group_rid; >+ >+ sid_peek_rid(&sids[i], &group_rid); >+ >+ ldapsam_del_groupmem(my_methods, >+ tmp_ctx, >+ group_rid, >+ user_rid); >+ } >+ } >+ >+ delete_dn: >+ > rc = smbldap_delete(ldap_state->smbldap_state, dn); > if (rc != LDAP_SUCCESS) { > return NT_STATUS_UNSUCCESSFUL; >-- >1.6.2.5 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 4296
:
4374
| 4624