Browse Source

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.
Noriko Hosoi 13 năm trước cách đây
mục cha
commit
e9941a2915

+ 5 - 3
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

+ 2 - 2
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;
 }