浏览代码

Bug 617630 - fix coverify Defect Type: Resource leaks issues CID 12052 - 12093

https://bugzilla.redhat.com/show_bug.cgi?id=617630
Resolves: bug 617630
Bug description: fix coverify Defect Type: Resource leaks issues CID 12053
description: windows_inc_delete() has been modified to stop the
replication protocol and release resources.
Noriko Hosoi 15 年之前
父节点
当前提交
0329272d75
共有 1 个文件被更改,包括 17 次插入1 次删除
  1. 17 1
      ldap/servers/plugins/replication/windows_inc_protocol.c

+ 17 - 1
ldap/servers/plugins/replication/windows_inc_protocol.c

@@ -161,6 +161,22 @@ windows_inc_delete(Private_Repl_Protocol **prpp)
 	/* First, stop the protocol if it isn't already stopped */
 	/* Then, delete all resources used by the protocol */
 	slapi_eq_cancel(dirsync); 
+
+        if (!(*prpp)->stopped) {
+                (*prpp)->stopped = 1;
+                (*prpp)->stop(*prpp);
+        }
+        if ((*prpp)->lock) {
+                PR_DestroyLock((*prpp)->lock);
+                (*prpp)->lock = NULL;
+        }
+        if ((*prpp)->cvar) {
+                PR_DestroyCondVar((*prpp)->cvar);
+                (*prpp)->cvar = NULL;
+        }
+        slapi_ch_free((void **)&(*prpp)->private);
+        slapi_ch_free((void **)prpp);
+
 	LDAPDebug0Args( LDAP_DEBUG_TRACE, "<= windows_inc_delete\n" );
 }
 
@@ -1556,7 +1572,7 @@ Private_Repl_Protocol *
 Windows_Inc_Protocol_new(Repl_Protocol *rp)
 {
 	windows_inc_private *rip = NULL;
-	Private_Repl_Protocol *prp = (Private_Repl_Protocol *)slapi_ch_malloc(sizeof(Private_Repl_Protocol));
+	Private_Repl_Protocol *prp = (Private_Repl_Protocol *)slapi_ch_calloc(1, sizeof(Private_Repl_Protocol));
 
 	LDAPDebug0Args( LDAP_DEBUG_TRACE, "=> Windows_Inc_Protocol_new\n" );