Browse Source

Ticket #48048 - Fix coverity issues - 2015/2/24

Coverity defect 11895 - Explicit null dereferenced (FORWARD_NULL)
Coverity defect 13037 - Explicit null dereferenced (FORWARD_NULL)
Coverity defect 13039 - Dereference after null check (FORWARD_NULL)
Coverity defect 13043 - Explicit null dereferenced (FORWARD_NULL)
Coverity defect 13044 - Explicit null dereferenced (FORWARD_NULL)
Description:  Added NULL check for op, e, and op_params.
modified: copy_operation_parameters, write_changelog_and_ruv,
and cancel_opcsn in repl5_plugins.c
Noriko Hosoi 10 năm trước cách đây
mục cha
commit
f0d49d2d51
1 tập tin đã thay đổi với 36 bổ sung21 xóa
  1. 36 21
      ldap/servers/plugins/replication/repl5_plugins.c

+ 36 - 21
ldap/servers/plugins/replication/repl5_plugins.c

@@ -987,11 +987,17 @@ copy_operation_parameters(Slapi_PBlock *pb)
         /* we only save the original operation parameters for replicated operations
            since client operations don't go through urp engine and pblock data can be logged */
         slapi_pblock_get( pb, SLAPI_OPERATION, &op );
-        PR_ASSERT (op);
-
+        if (NULL == op) {
+            slapi_log_error(SLAPI_LOG_REPL, REPLICATION_SUBSYSTEM,
+                            "copy_operation_parameters: operation is null.\n");
+            return;
+        }
         replica = (Replica*)object_get_data (repl_obj);
-        PR_ASSERT (replica);
-
+        if (NULL == replica) {
+            slapi_log_error(SLAPI_LOG_REPL, REPLICATION_SUBSYSTEM,
+                            "copy_operation_parameters: replica is null.\n");
+            return;
+        }
         opext = (supplier_operation_extension*) repl_sup_get_ext (REPL_SUP_EXT_OP, op);
         if (operation_is_flag_set(op,OP_FLAG_REPLICATED) &&
             !operation_is_flag_set(op, OP_FLAG_REPL_FIXUP))
@@ -1054,7 +1060,7 @@ update_ruv_component(Replica *replica, CSN *opcsn, Slapi_PBlock *pb)
  */
 static int
 write_changelog_and_ruv (Slapi_PBlock *pb)
-{	
+{
 	Slapi_Operation *op = NULL;
 	int rc;
 	slapi_operation_parameters *op_params = NULL;
@@ -1066,6 +1072,9 @@ write_changelog_and_ruv (Slapi_PBlock *pb)
 
 	/* we just let fixup operations through */
 	slapi_pblock_get( pb, SLAPI_OPERATION, &op );
+	if (NULL == op) {
+		return return_value;
+	}
 	if ((operation_is_flag_set(op, OP_FLAG_REPL_FIXUP)) ||
 		(operation_is_flag_set(op, OP_FLAG_TOMBSTONE_ENTRY)))
 	{
@@ -1125,7 +1134,9 @@ write_changelog_and_ruv (Slapi_PBlock *pb)
 			const char *uniqueid = NULL;
 
 			slapi_pblock_get (pb, SLAPI_OPERATION_PARAMETERS, &op_params);
-			PR_ASSERT (op_params);
+			if (NULL == op_params) {
+				return return_value;
+			}
 
 			/* need to set uniqueid operation parameter */
 			/* we try to use the appropriate entry (pre op or post op) 
@@ -1142,12 +1153,13 @@ write_changelog_and_ruv (Slapi_PBlock *pb)
 			{
 				slapi_pblock_get (pb, SLAPI_ENTRY_PRE_OP, &e);
 			}
-
-			PR_ASSERT (e);
-
+			if (NULL == e) {
+				return return_value;
+			}
 			uniqueid = slapi_entry_get_uniqueid (e);
-			PR_ASSERT (uniqueid);
-
+			if (NULL == uniqueid) {
+				return return_value;
+			}
 			op_params->target_address.uniqueid = slapi_ch_strdup (uniqueid);
 		} 
 
@@ -1343,17 +1355,20 @@ cancel_opcsn (Slapi_PBlock *pb)
     Object *repl_obj;
     Slapi_Operation *op = NULL;
 
-    PR_ASSERT (pb);
-
+    if (NULL == pb) {
+        return SLAPI_PLUGIN_SUCCESS;
+    }
     repl_obj = replica_get_replica_for_op (pb);
     slapi_pblock_get(pb, SLAPI_OPERATION, &op);
-    PR_ASSERT (op);
-	if (repl_obj)
+    if (NULL == op) {
+        return SLAPI_PLUGIN_SUCCESS;
+    }
+    if (repl_obj)
     {
         Replica *r;
         Object *gen_obj;
         CSNGen *gen;
-		CSN *opcsn;
+        CSN *opcsn;
 
         r = (Replica*)object_get_data (repl_obj);
         PR_ASSERT (r);
@@ -1365,11 +1380,11 @@ cancel_opcsn (Slapi_PBlock *pb)
             gen_obj = replica_get_csngen (r);        
             PR_ASSERT (gen_obj);
             gen = (CSNGen*)object_get_data (gen_obj);
-		    
-		    if (NULL != opcsn)
-		    {
-			    csngen_abort_csn (gen, operation_get_csn(op));
-		    }
+            
+            if (NULL != opcsn)
+            {
+                csngen_abort_csn (gen, operation_get_csn(op));
+            }
         
             object_release (gen_obj);
         }