diff -up cpu-1.4.3/src/plugins/ldap/ld.c.mod-delete cpu-1.4.3/src/plugins/ldap/ld.c --- cpu-1.4.3/src/plugins/ldap/ld.c.mod-delete 2010-11-05 21:41:38.000000000 -0600 +++ cpu-1.4.3/src/plugins/ldap/ld.c 2010-11-05 21:45:29.000000000 -0600 @@ -285,19 +285,26 @@ ldapBuildListStr (int mod_op, char *mod_ if (mod_type == NULL || strlen(mod_type) == strspn(mod_type, " ")) return mods; - if (value == NULL || strlen(value) == strspn(value, " ")) - return mods; - mods = ldapAddList (mods); - temp = (char **) malloc (sizeof (char *) * 2); - bzero (temp, sizeof (char *) * 2); - temp[0] = value; - temp[1] = NULL; + if (value == NULL || strlen(value) == strspn(value, " ")) + { + mods[list_size]->mod_op = LDAP_MOD_DELETE; + mods[list_size]->mod_type = strdup (mod_type); + mods[list_size]->mod_values = NULL; + } + else + { + temp = (char **) malloc (sizeof (char *) * 2); + bzero (temp, sizeof (char *) * 2); + temp[0] = value; + temp[1] = NULL; + + mods[list_size]->mod_op = mod_op; + mods[list_size]->mod_type = strdup (mod_type); + mods[list_size]->mod_values = temp; + } - mods[list_size]->mod_op = mod_op; - mods[list_size]->mod_type = strdup (mod_type); - mods[list_size]->mod_values = temp; list_size++; return mods; }