From a57d9131f9d0ae7a5d9865dd6be7f37f26de376c Mon Sep 17 00:00:00 2001 From: Noriko Hosoi Date: Oct 25 2012 17:20:32 +0000 Subject: Coverity defects The commit b9eeb2e1a8e688dfec753e8965d0e5aeb119e638 for Ticket #481 "expand nested posix groups" introduced 4 coverity defects. Description: 13100, 13101: Missing return statement Fix description: addUserToGroupMembership and propogateDeletion- UpwardCallback are declared to return an integer value, but nothing was returned. This patch changes it to return 0. 13102: Resource leak Fix description: The memory of valueset muid_old_vs is internally allocated. It was meant to be set to muid_upward_vs and freed together when muid_upward_vs is freed. But due to the function calling order, it was not properly set and it lost the chance to be freed. This patch calls slapi_attr_get_valueset prior to slapi_valueset_set_valueset and let free muid_old_vs together with slapi_valueset_set_valueset. 13103: Uninitialized pointer read Fix description: Possibly uninitialized variable was passed to a logging function slapi_log_error, but actually it was not referred. With this patch, the variable filter is no longer to passed to the function. (cherry picked from commit e9941a2915ac848abe9a4afe802d0432aa0c354a) --- diff --git a/ldap/servers/plugins/posix-winsync/posix-group-func.c b/ldap/servers/plugins/posix-winsync/posix-group-func.c index 66b9272..be3a6ec 100644 --- a/ldap/servers/plugins/posix-winsync/posix-group-func.c +++ b/ldap/servers/plugins/posix-winsync/posix-group-func.c @@ -473,15 +473,15 @@ propogateMembershipUpward(Slapi_Entry *entry, Slapi_ValueSet *muid_vs, int depth muid_here_vs = muid_vs; } else { + int i = 0; + Slapi_Value *v = NULL; /* Eliminate duplicates */ muid_upward_vs = slapi_valueset_new(); muid_here_vs = slapi_valueset_new(); + slapi_attr_get_valueset(muid_old_attr, &muid_old_vs); slapi_valueset_set_valueset(muid_upward_vs, muid_old_vs); - slapi_attr_get_valueset(muid_old_attr, &muid_old_vs); - int i = 0; - Slapi_Value *v = NULL; for (i = slapi_valueset_first_value(muid_vs, &v); i != -1; i = slapi_valueset_next_value(muid_vs, i, &v)) { @@ -542,6 +542,7 @@ propogateDeletionsUpwardCallback(Slapi_Entry *entry, void *callback_data) { struct propogateDeletionsUpwardArgs *args = (struct propogateDeletionsUpwardArgs *)(callback_data); propogateDeletionsUpward(entry, args->base_sdn, args->smod_deluids, args->del_nested_vs, args->depth); + return 0; } void @@ -920,6 +921,7 @@ addUserToGroupMembership(Slapi_Entry *entry) propogateMembershipUpward(entry, muid_vs, 0); slapi_valueset_free(muid_vs); muid_vs = NULL; + return 0; } int diff --git a/ldap/servers/plugins/posix-winsync/posix-group-task.c b/ldap/servers/plugins/posix-winsync/posix-group-task.c index 4555f1b..e5385b0 100644 --- a/ldap/servers/plugins/posix-winsync/posix-group-task.c +++ b/ldap/servers/plugins/posix-winsync/posix-group-task.c @@ -152,9 +152,9 @@ posix_group_task_add(Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Entry *eAfter, int rv = SLAPI_DSE_CALLBACK_OK; } - out: +out: slapi_log_error(SLAPI_LOG_PLUGIN, POSIX_WINSYNC_PLUGIN_NAME, - "posix_group_task_add: <==\n", filter); + "posix_group_task_add: <==\n"); return rv; }