[libvirt] [PATCH] storage_driver: Don't crash in storagePoolCreateXML

In my recent patches I've introduced virStoragePoolObjIsStarting() which is then used to protect storage pool definition when the pool object is locked and unlocked during long running jobs. Well, my patches did not anticipate that @obj can be NULL under 'cleanup' label in storagePoolCreateXML() (for instance when parsing XML fails). This imperfection is causing libvirtd to crash then. Fixes: 13284a6b83 storage_driver: Protect pool def during startup and build Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/storage/storage_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index cd9f14a2c0..30940b5dcf 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -808,7 +808,7 @@ storagePoolCreateXML(virConnectPtr conn, pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL); cleanup: - if (virStoragePoolObjIsStarting(obj)) { + if (obj && virStoragePoolObjIsStarting(obj)) { if (!virStoragePoolObjIsActive(obj)) virStoragePoolUpdateInactive(obj); virStoragePoolObjSetStarting(obj, false); -- 2.21.0

On Fri, Aug 23, 2019 at 03:24:43PM +0200, Michal Privoznik wrote:
In my recent patches I've introduced virStoragePoolObjIsStarting() which is then used to protect storage pool definition when the pool object is locked and unlocked during long running jobs. Well, my patches did not anticipate that @obj can be NULL under 'cleanup' label in storagePoolCreateXML() (for instance when parsing XML fails). This imperfection is causing libvirtd to crash then.
Fixes: 13284a6b83 storage_driver: Protect pool def during startup and build
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
participants (2)
-
Martin Kletzander
-
Michal Privoznik