From: Luyao Huang Date: Mon, 11 May 2015 12:59:37 +0000 (+0800) Subject: conf: Report error for unknown shmem ioeventfd value X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=c49b9032a212538ff28786d1b9922ebf549ea5ca;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git conf: Report error for unknown shmem ioeventfd value https://bugzilla.redhat.com/show_bug.cgi?id=1220265 Passing the return value to an enum directly is not safe. Fix this by comparing the true integer result of virTristateSwitchTypeFromString(). Signed-off-by: Luyao Huang --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e3e0f637d..19b4d9515 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -10829,12 +10829,16 @@ virDomainShmemDefParseXML(xmlNodePtr node, } VIR_FREE(tmp); - if ((tmp = virXMLPropString(msi, "ioeventfd")) && - (def->msi.ioeventfd = virTristateSwitchTypeFromString(tmp)) <= 0) { - virReportError(VIR_ERR_XML_ERROR, - _("invalid msi ioeventfd setting for shmem: '%s'"), - tmp); - goto cleanup; + if ((tmp = virXMLPropString(msi, "ioeventfd"))) { + int val; + + if ((val = virTristateSwitchTypeFromString(tmp)) <= 0) { + virReportError(VIR_ERR_XML_ERROR, + _("invalid msi ioeventfd setting for shmem: '%s'"), + tmp); + goto cleanup; + } + def->msi.ioeventfd = val; } VIR_FREE(tmp); }