From 5236aed83f54fca2e7072262aa29416b281e620a Mon Sep 17 00:00:00 2001 From: Jim Fehlig Date: Wed, 4 Sep 2013 14:27:20 -0600 Subject: [PATCH] libxl: Fix Coverity warning John Ferlan reported the following Coverity warning: In libxlDomainCoreDump() Coverity has noted a FORWARD_NULL reference: 2004 if ((flags & VIR_DUMP_CRASH) && !vm->persistent) { 2005 virDomainObjListRemove(driver->domains, vm); (20) Event assign_zero: Assigning: "vm" = "NULL". Also see events: [var_deref_model] 2006 vm = NULL; 2007 } 2008 2009 ret = 0; 2010 2011 cleanup_unpause: (21) Event var_deref_model: Passing null pointer "vm" to function "virDomainObjIsActive(virDomainObjPtr)", which dereferences it. [details] Also see events: [assign_zero] 2012 if (virDomainObjIsActive(vm) && paused) { 2013 if (libxl_domain_unpause(priv->ctx, dom->id) != 0) { 2014 virReportError(VIR_ERR_INTERNAL_ERROR, Removing the vm from domain obj list and setting it to NULL can be done in the previous 'if (flags & VIR_DUMP_CRASH)' conditional. Fix the Coverity warning by ensuring vm is not NULL before testing if it is still active. --- src/libxl/libxl_driver.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 69b992b938..426167cb8c 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -1999,17 +1999,16 @@ libxlDomainCoreDump(virDomainPtr dom, const char *to, unsigned int flags) event = virDomainEventNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED, VIR_DOMAIN_EVENT_STOPPED_CRASHED); - } - - if ((flags & VIR_DUMP_CRASH) && !vm->persistent) { - virDomainObjListRemove(driver->domains, vm); - vm = NULL; + if (!vm->persistent) { + virDomainObjListRemove(driver->domains, vm); + vm = NULL; + } } ret = 0; cleanup_unpause: - if (virDomainObjIsActive(vm) && paused) { + if (vm && virDomainObjIsActive(vm) && paused) { if (libxl_domain_unpause(priv->ctx, dom->id) != 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("After dumping core, failed to resume domain '%d' with"