[libvirt] [PATCH] opennebula: Fix potential memory/mutex leak in state driver startup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In case of an error the domains hash and the driver mutex may leak.

* src/opennebula/one_driver.c: free/destroy domains hash and driver
  mutex in error cases
---
 src/opennebula/one_driver.c |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/opennebula/one_driver.c b/src/opennebula/one_driver.c
index 19a335c..f461ff6 100644
--- a/src/opennebula/one_driver.c
+++ b/src/opennebula/one_driver.c
@@ -617,23 +617,26 @@ static int oneStartup(int privileged ATTRIBUTE_UNUSED){
         return -1;
     }
 
+    c_oneStart();
+    oneDriverLock(one_driver);
+
     if (virDomainObjListInit(&one_driver->domains) < 0) {
-        virMutexDestroy(&one_driver->lock);
-        VIR_FREE(one_driver);
-        return -1;
+        goto error;
     }
 
-    c_oneStart();
-    oneDriverLock(one_driver);
     one_driver->nextid=1;
     if ((one_driver->caps = oneCapsInit()) == NULL) {
-        oneDriverUnlock(one_driver);
-        VIR_FREE(one_driver);
-        return -1;
+        virReportOOMError(NULL);
+        goto error;
     }
     oneDriverUnlock(one_driver);
 
     return 0;
+
+error:
+    oneDriverUnlock(one_driver);
+    oneShutdown();
+    return -1;
 }
 
 static int oneShutdown(void){
-- 
1.6.0.4

--
Libvir-list mailing list
Libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]