]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fix crash if OOM occurs when creating virConnectPtr
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 23 Sep 2013 13:09:19 +0000 (14:09 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 24 Sep 2013 09:51:28 +0000 (10:51 +0100)
If a OOM error occurs in virGetConnect, this may cause the
virConnectDispose method to de-reference a NULL pointer,
since the close callback will not have been initialized.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/datatypes.c

index 940d968b46a36f2c010a0147840a2f567fa16884..161f1b0d0570e5fb0abc70dbbecb6133dc4dc50f 100644 (file)
@@ -164,11 +164,13 @@ virConnectDispose(void *obj)
 
     virURIFree(conn->uri);
 
-    virObjectLock(conn->closeCallback);
-    conn->closeCallback->callback = NULL;
-    virObjectUnlock(conn->closeCallback);
+    if (conn->closeCallback) {
+        virObjectLock(conn->closeCallback);
+        conn->closeCallback->callback = NULL;
+        virObjectUnlock(conn->closeCallback);
 
-    virObjectUnref(conn->closeCallback);
+        virObjectUnref(conn->closeCallback);
+    }
 
     virMutexUnlock(&conn->lock);
     virMutexDestroy(&conn->lock);