[389-commits] ldap/servers

Richard Allen Megginson rmeggins at fedoraproject.org
Wed May 2 15:54:53 UTC 2012


 ldap/servers/plugins/memberof/memberof.c      |    3 ++-
 ldap/servers/plugins/replication/cl5_api.c    |    9 +++++----
 ldap/servers/plugins/replication/repl5_agmt.c |   20 +++++++++++++++-----
 3 files changed, 22 insertions(+), 10 deletions(-)

New commits:
commit fc6a0cd3362dfdb73a43d3b52ae42a48678c2a24
Author: Rich Megginson <rmeggins at redhat.com>
Date:   Wed May 2 09:17:52 2012 -0600

    Ticket #353 - coverity 12625-12629 - leaks, dead code, unchecked return
    
    https://fedorahosted.org/389/ticket/353
    Resolves: Ticket #353
    Bug Description: coverity 12625-12629 - leaks, dead code, unchecked return
    Reviewed by: mreynolds (Thanks!)
    Branch: master
    Fix Description: In addition to the errors fixed, I added the use of
    slapi_entry_attr_get_bool() so that values of true, yes, etc. could
    be used in addition to on/off.
    Platforms tested: RHEL6 x86_64
    Flag Day: no
    Doc impact: no

diff --git a/ldap/servers/plugins/memberof/memberof.c b/ldap/servers/plugins/memberof/memberof.c
index 229b962..c98d8ad 100644
--- a/ldap/servers/plugins/memberof/memberof.c
+++ b/ldap/servers/plugins/memberof/memberof.c
@@ -513,7 +513,7 @@ int memberof_del_dn_type_callback(Slapi_Entry *e, void *callback_data)
 int memberof_call_foreach_dn(Slapi_PBlock *pb, char *dn,
 	char **types, plugin_search_entry_callback callback, void *callback_data)
 {
-	Slapi_PBlock *search_pb = slapi_pblock_new();
+	Slapi_PBlock *search_pb = NULL;
 	Slapi_DN *base_sdn = NULL;
 	Slapi_Backend *be = NULL;
 	Slapi_DN *sdn = NULL;
@@ -565,6 +565,7 @@ int memberof_call_foreach_dn(Slapi_PBlock *pb, char *dn,
 		return rc;
 	}
 
+	search_pb = slapi_pblock_new();
 	be = slapi_get_first_backend(&cookie);
 	while(be){
 		if(!all_backends){
diff --git a/ldap/servers/plugins/replication/cl5_api.c b/ldap/servers/plugins/replication/cl5_api.c
index 4c23af5..2819511 100644
--- a/ldap/servers/plugins/replication/cl5_api.c
+++ b/ldap/servers/plugins/replication/cl5_api.c
@@ -6556,9 +6556,6 @@ cl5CleanRUV(ReplicaId rid){
         ruv_delete_replica(file->maxRUV, rid);
         obj = objset_next_obj(s_cl5Desc.dbFiles, obj);
     }
-
-    if (obj)
-        object_release (obj);
 }
 
 void trigger_cl_trimming(){
@@ -6585,7 +6582,11 @@ trigger_cl_trimming_thread(){
     if(s_cl5Desc.dbState == CL5_STATE_CLOSED || s_cl5Desc.dbState == CL5_STATE_CLOSING){
         return;
     }
-    _cl5AddThread();
+    if (CL5_SUCCESS != _cl5AddThread()) {
+        slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name_cl,
+            "trigger_cl_trimming: failed to increment thread count "
+            "NSPR error - %d\n", PR_GetError ());
+    }
     _cl5DoTrimming();
     _cl5RemoveThread();
 }
diff --git a/ldap/servers/plugins/replication/repl5_agmt.c b/ldap/servers/plugins/replication/repl5_agmt.c
index cdd074e..d194acc 100644
--- a/ldap/servers/plugins/replication/repl5_agmt.c
+++ b/ldap/servers/plugins/replication/repl5_agmt.c
@@ -341,11 +341,14 @@ agmt_new_from_entry(Slapi_Entry *e)
 	tmpstr = slapi_entry_attr_get_charptr(e, type_nsds5ReplicaEnabled);
 	if (NULL != tmpstr)
 	{
-		if(strcasecmp(tmpstr, "on") == 0){
+		if(strcasecmp(tmpstr, "off") == 0){
+			ra->is_enabled = PR_FALSE;
+		} else if(strcasecmp(tmpstr, "on") == 0){
 			ra->is_enabled = PR_TRUE;
 		} else {
-			ra->is_enabled = PR_FALSE;
+			ra->is_enabled = slapi_entry_attr_get_bool(e, type_nsds5ReplicaEnabled);
 		}
+		slapi_ch_free_string(&tmpstr);
 	} else {
 		ra->is_enabled = PR_TRUE;
 	}
@@ -2499,14 +2502,22 @@ agmt_set_enabled_from_entry(Repl_Agmt *ra, Slapi_Entry *e){
 	PR_Lock(ra->lock);
 	attr_val = slapi_entry_attr_get_charptr(e, type_nsds5ReplicaEnabled);
 	if(attr_val){
-		if(strcasecmp(attr_val,"on") == 0){
+		PRBool is_enabled = PR_TRUE;
+		if(strcasecmp(attr_val,"off") == 0){
+			is_enabled = PR_FALSE;
+		} else if(strcasecmp(attr_val,"on") == 0){
+			is_enabled = PR_TRUE;
+		} else {
+			is_enabled = slapi_entry_attr_get_bool(e, type_nsds5ReplicaEnabled);
+		}
+		slapi_ch_free_string(&attr_val);
+		if(is_enabled){
 			if(!ra->is_enabled){
 				ra->is_enabled = PR_TRUE;
 				slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name, "agmt_set_enabled_from_entry: "
 					"agreement is now enabled (%s)\n",ra->long_name);
 				PR_Unlock(ra->lock);
 				agmt_start(ra);
-				slapi_ch_free_string(&attr_val);
 				return rc;
 			}
 		} else {
@@ -2518,7 +2529,6 @@ agmt_set_enabled_from_entry(Repl_Agmt *ra, Slapi_Entry *e){
 				agmt_stop(ra);
 				agmt_update_consumer_ruv(ra);
 				agmt_set_last_update_status(ra,0,0,"agreement disabled");
-				slapi_ch_free_string(&attr_val);
 				return rc;
 			}
 		}




More information about the 389-commits mailing list