From 2de57e7b0ee65989d6a89677a93128a345d1e522 Mon Sep 17 00:00:00 2001 From: Noriko Hosoi Date: Mon, 11 Feb 2013 14:49:14 -0800 Subject: [PATCH] Ticket #579 - Error messages encountered when using POSIX winsync Bug description: posix_group_fix_memberuid_callback registered by posixWinsyncCreateMemberOfTask calls an internal modify function even if there are no attributes to fix up. The attempt fails as expected, but it logs cryptic errors in the error log: - slapi_modify_internal_set_pb: NULL parameter - allow_operation: component identity is NULL Fix description: This patch skips calling the fix up internal modify if there is no attributes to fix up. --- .../plugins/posix-winsync/posix-group-task.c | 21 +++++++++++-------- 1 files changed, 12 insertions(+), 9 deletions(-) diff --git a/ldap/servers/plugins/posix-winsync/posix-group-task.c b/ldap/servers/plugins/posix-winsync/posix-group-task.c index 8d9d8ac..2cb9a31 100644 --- a/ldap/servers/plugins/posix-winsync/posix-group-task.c +++ b/ldap/servers/plugins/posix-winsync/posix-group-task.c @@ -249,6 +249,7 @@ posix_group_fix_memberuid_callback(Slapi_Entry *e, void *callback_data) char *dn = slapi_entry_get_dn(e); Slapi_DN *sdn = slapi_entry_get_sdn(e); + LDAPMod **mods = NULL; /* Clean out memberuids and dsonlymemberuids without a valid referant */ rc = slapi_entry_attr_find(e, "memberuid", &muid_attr); @@ -379,17 +380,19 @@ posix_group_fix_memberuid_callback(Slapi_Entry *e, void *callback_data) } } - Slapi_PBlock *mod_pb = slapi_pblock_new(); + mods = slapi_mods_get_ldapmods_passout(smods); + if (mods) { + Slapi_PBlock *mod_pb = NULL; + mod_pb = slapi_pblock_new(); + slapi_modify_internal_set_pb_ext(mod_pb, sdn, mods, 0, 0, + posix_winsync_get_plugin_identity(), 0); - slapi_modify_internal_set_pb_ext(mod_pb, sdn, slapi_mods_get_ldapmods_passout(smods), 0, 0, - posix_winsync_get_plugin_identity(), 0); - - slapi_pblock_set(mod_pb, SLAPI_TXN, the_cb_data->txn); - slapi_modify_internal_pb(mod_pb); - - slapi_pblock_get(mod_pb, SLAPI_PLUGIN_INTOP_RESULT, &rc); - slapi_pblock_destroy(mod_pb); + slapi_pblock_set(mod_pb, SLAPI_TXN, the_cb_data->txn); + slapi_modify_internal_pb(mod_pb); + slapi_pblock_get(mod_pb, SLAPI_PLUGIN_INTOP_RESULT, &rc); + slapi_pblock_destroy(mod_pb); + } slapi_mods_free(&smods); slapi_log_error(SLAPI_LOG_PLUGIN, POSIX_WINSYNC_PLUGIN_NAME, -- 1.7.7.6