Access the 'mac_node' variable only when it was filled.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/conf/domain_conf.c | 48 +++++++++++++++++++++---------------------
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 2a266ac6c9..d3755547c7 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9321,37 +9321,37 @@ virDomainNetDefParseXML(virDomainXMLOption *xmlopt,
if ((tap = virXPathString("string(./backend/@tap)", ctxt)))
def->backend.tap = virFileSanitizePath(tap);
- mac_node = virXPathNode("./mac", ctxt);
+ if ((mac_node = virXPathNode("./mac", ctxt))) {
+ if ((macaddr = virXMLPropString(mac_node, "address"))) {
+ if (virMacAddrParse((const char *)macaddr, &def->mac) < 0) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("unable to parse mac address '%s'"),
+ (const char *)macaddr);
+ return NULL;
+ }
+ if (virMacAddrIsMulticast(&def->mac)) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("expected unicast mac address, found multicast
'%s'"),
+ (const char *)macaddr);
+ return NULL;
+ }
+ }
- if ((macaddr = virXMLPropString(mac_node, "address"))) {
- if (virMacAddrParse((const char *)macaddr, &def->mac) < 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("unable to parse mac address '%s'"),
- (const char *)macaddr);
+ if (virXMLPropEnum(mac_node, "type",
+ virDomainNetMacTypeTypeFromString,
+ VIR_XML_PROP_NONZERO, &def->mac_type) < 0)
return NULL;
- }
- if (virMacAddrIsMulticast(&def->mac)) {
- virReportError(VIR_ERR_XML_ERROR,
- _("expected unicast mac address, found multicast
'%s'"),
- (const char *)macaddr);
+
+ if (virXMLPropTristateBool(mac_node, "check", VIR_XML_PROP_NONE,
+ &def->mac_check) < 0)
return NULL;
- }
- } else {
+ }
+
+ if (!macaddr) {
virDomainNetGenerateMAC(xmlopt, &def->mac);
def->mac_generated = true;
}
- if (virXMLPropEnum(mac_node, "type",
- virDomainNetMacTypeTypeFromString,
- VIR_XML_PROP_NONZERO,
- &def->mac_type) < 0)
- return NULL;
-
- if (virXMLPropTristateBool(mac_node, "check",
- VIR_XML_PROP_NONE,
- &def->mac_check) < 0)
- return NULL;
-
if (virDomainDeviceInfoParseXML(xmlopt, node, ctxt, &def->info,
flags | VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT
| VIR_DOMAIN_DEF_PARSE_ALLOW_ROM) < 0) {
--
2.37.1