Browse Source

Ticket 47963 - skip nested groups breaks memberof fixup task

Bug Description:  Setting memberofskipnested to "on" breaks memberOf fixup task.

Fix Description:  We never want to skip nested group checking when performing
                  a fixup task.  Add a flag to distinguish that the fixup operation
                  is a task, and not a delete.

https://fedorahosted.org/389/ticket/47963

Reviewed by: nkinder(Thanks!)
Mark Reynolds 11 years ago
parent
commit
d8e8119e92

+ 4 - 1
ldap/servers/plugins/memberof/memberof.c

@@ -2631,6 +2631,9 @@ void memberof_fixup_task_thread(void *arg)
 	memberof_copy_config(&configCopy, memberof_get_config());
 	memberof_unlock_config();
 
+	/* Mark this as a task operation */
+	configCopy.fixup_task = 1;
+
 	if (usetxn) {
 		Slapi_DN *sdn = slapi_sdn_new_dn_byref(td->dn);
 		Slapi_Backend *be = slapi_be_select(sdn);
@@ -2816,7 +2819,7 @@ int memberof_fix_memberof_callback(Slapi_Entry *e, void *callback_data)
 	memberof_del_dn_data del_data = {0, config->memberof_attr};
 	Slapi_ValueSet *groups = 0;
 
-	if(!config->skip_nested){
+	if(!config->skip_nested || config->fixup_task){
 		/* get a list of all of the groups this user belongs to */
 		groups = memberof_get_groups(config, sdn);
 	}

+ 1 - 0
ldap/servers/plugins/memberof/memberof.h

@@ -86,6 +86,7 @@ typedef struct memberofconfig {
 	Slapi_Filter *group_filter;
 	Slapi_Attr **group_slapiattrs;
 	int skip_nested;
+	int fixup_task;
 } MemberOfConfig;