ldap/servers/plugins/posix-winsync/posix-group-func.c | 4 ++--
ldap/servers/plugins/posix-winsync/posix-group-func.h | 2 +-
ldap/servers/plugins/posix-winsync/posix-winsync.c | 18 ++++++------------
ldap/servers/slapd/pw.c | 2 +-
4 files changed, 10 insertions(+), 16 deletions(-)
New commits:
commit f9c92691277f7ebb468cc22e3bff74a2b6c14c5a
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Tue Apr 2 16:59:19 2013 -0400
Ticket 550 - posix winsync will not create memberuid values if group entry become
posix group in the same sync interval
Description: Posix winsync plugin can create memberUid values according the
uniquemember values.
prerequisite is that the group is already a posix group. Will add the
posix attributes
(gid) and the group members on the AD on the same time, so it occurs in
the same sync
interval and the memberUid values will not generated.
This was from the ticket reporter: cgrzemba.
This patch has been modified to work with 1.3.1
Also fixed a compiler warning in pw.c(different issue)
https://fedorahosted.org/389/ticket/550
Reviewed by: noriko & richm(Thanks!!)
diff --git a/ldap/servers/plugins/posix-winsync/posix-group-func.c
b/ldap/servers/plugins/posix-winsync/posix-group-func.c
index 9d744ba..7e069be 100644
--- a/ldap/servers/plugins/posix-winsync/posix-group-func.c
+++ b/ldap/servers/plugins/posix-winsync/posix-group-func.c
@@ -628,7 +628,7 @@ propogateDeletionsUpward(Slapi_Entry *entry, const Slapi_DN *base_sdn,
Slapi_Val
}
int
-modGroupMembership(Slapi_Entry *entry, Slapi_Mods *smods, int *do_modify)
+modGroupMembership(Slapi_Entry *entry, Slapi_Mods *smods, int *do_modify, int
newposixgroup)
{
slapi_log_error(SLAPI_LOG_PLUGIN, POSIX_WINSYNC_PLUGIN_NAME,
"modGroupMembership: ==>\n");
slapi_log_error(SLAPI_LOG_PLUGIN, POSIX_WINSYNC_PLUGIN_NAME,
"modGroupMembership: Modding %s\n",
@@ -636,7 +636,7 @@ modGroupMembership(Slapi_Entry *entry, Slapi_Mods *smods, int
*do_modify)
int posixGroup = hasObjectClass(entry, "posixGroup");
- if (!(posixGroup || hasObjectClass(entry, "ntGroup"))) {
+ if (!(posixGroup || hasObjectClass(entry, "ntGroup")) &&
!newposixgroup) {
slapi_log_error(SLAPI_LOG_PLUGIN, POSIX_WINSYNC_PLUGIN_NAME,
"modGroupMembership end: Not a posixGroup or
ntGroup\n");
return 0;
diff --git a/ldap/servers/plugins/posix-winsync/posix-group-func.h
b/ldap/servers/plugins/posix-winsync/posix-group-func.h
index 0f0ae37..85e5235 100644
--- a/ldap/servers/plugins/posix-winsync/posix-group-func.h
+++ b/ldap/servers/plugins/posix-winsync/posix-group-func.h
@@ -11,7 +11,7 @@ Slapi_PBlock * dnHasObjectClass( const char *baseDN, const char
*objectClass, Sl
char * searchUid(const char *udn);
int dn_in_set(const char* uid, char **uids);
*/
-int modGroupMembership(Slapi_Entry *entry, Slapi_Mods *smods, int *do_modify);
+int modGroupMembership(Slapi_Entry *entry, Slapi_Mods *smods, int *do_modify, int
newposixgroup);
int addGroupMembership(Slapi_Entry *entry, Slapi_Entry *ad_entry);
char * searchUid(const char *udn);
void memberUidLock();
diff --git a/ldap/servers/plugins/posix-winsync/posix-winsync.c
b/ldap/servers/plugins/posix-winsync/posix-winsync.c
index 92a3a79..f40f5ff 100644
--- a/ldap/servers/plugins/posix-winsync/posix-winsync.c
+++ b/ldap/servers/plugins/posix-winsync/posix-winsync.c
@@ -958,11 +958,6 @@ posix_winsync_pre_ds_mod_group_cb(void *cbdata, const Slapi_Entry
*rawentry, Sla
slapi_log_error(SLAPI_LOG_PLUGIN, posix_winsync_plugin_name,
"_pre_ds_mod_group_cb present %d modify %d before\n",
is_present_local,
do_modify_local);
- if (posix_winsync_config_get_mapMemberUid() ||
posix_winsync_config_get_mapNestedGrouping()) {
- memberUidLock();
- modGroupMembership(ds_entry, smods, do_modify);
- memberUidUnlock();
- }
slapi_log_error(SLAPI_LOG_PLUGIN, posix_winsync_plugin_name,
"_pre_ds_mod_group_cb present %d modify %d\n",
is_present_local,
@@ -985,19 +980,18 @@ posix_winsync_pre_ds_mod_group_cb(void *cbdata, const Slapi_Entry
*rawentry, Sla
"_pre_ds_mod_group_cb add oc:posixGroup\n");
slapi_mods_add_mod_values(smods, LDAP_MOD_REPLACE, "objectClass",
valueset_get_valuearray(oc_vs));
- slapi_log_error(SLAPI_LOG_PLUGIN, posix_winsync_plugin_name,
- "_pre_ds_mod_group_cb step\n");
slapi_value_free(&oc_nv);
- slapi_log_error(SLAPI_LOG_PLUGIN, posix_winsync_plugin_name,
- "_pre_ds_mod_group_cb step\n");
slapi_valueset_free(oc_vs);
- slapi_log_error(SLAPI_LOG_PLUGIN, posix_winsync_plugin_name,
- "_pre_ds_mod_group_cb step\n");
}
slapi_value_free(&voc);
}
- slapi_log_error(SLAPI_LOG_PLUGIN, posix_winsync_plugin_name,
"_pre_ds_mod_group_cb step\n");
+ if (posix_winsync_config_get_mapMemberUid() ||
posix_winsync_config_get_mapNestedGrouping()) {
+ memberUidLock();
+ modGroupMembership(ds_entry, smods, do_modify, do_modify_local);
+ memberUidUnlock();
+ }
+ slapi_log_error(SLAPI_LOG_PLUGIN, posix_winsync_plugin_name,
"_pre_ds_mod_group_cb step\n");
if (slapi_is_loglevel_set(SLAPI_LOG_PLUGIN)) {
for (mod = slapi_mods_get_first_mod(smods); mod; mod =
slapi_mods_get_next_mod(smods)) {
slapi_mod_dump(mod, 0);
diff --git a/ldap/servers/slapd/pw.c b/ldap/servers/slapd/pw.c
index ae94903..eb4ebd4 100644
--- a/ldap/servers/slapd/pw.c
+++ b/ldap/servers/slapd/pw.c
@@ -1535,7 +1535,7 @@ pw_get_admin_users(passwdPolicy *pwp)
const Slapi_DN *sdn = pwp->pw_admin;
char **uniquemember_vals = NULL;
char **member_vals = NULL;
- char *binddn = slapi_sdn_get_dn(sdn);
+ const char *binddn = slapi_sdn_get_dn(sdn);
int uniquemember_count = 0;
int member_count = 0;
int nentries = 0;