andykimpe / rpms / 389-ds-base

Forked from rpms/389-ds-base 5 months ago
Clone
Blob Blame History Raw
From 2f960e4bd658679330faa249981f1b48bc7a6e03 Mon Sep 17 00:00:00 2001
From: Noriko Hosoi <nhosoi@totoro.usersys.redhat.com>
Date: Wed, 24 Oct 2012 15:27:48 -0700
Subject: [PATCH 06/10] 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)
(cherry picked from commit a57d9131f9d0ae7a5d9865dd6be7f37f26de376c)
---
 .../plugins/posix-winsync/posix-group-func.c       |    8 +++++---
 .../plugins/posix-winsync/posix-group-task.c       |    4 ++--
 2 files changed, 7 insertions(+), 5 deletions(-)

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;
 }
-- 
1.7.1