]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: log error when encountering multiple filterrefs in interface
authorLaine Stump <laine@laine.org>
Tue, 14 Aug 2012 15:03:38 +0000 (11:03 -0400)
committerLaine Stump <laine@laine.org>
Wed, 15 Aug 2012 03:53:58 +0000 (23:53 -0400)
Each interface has a single pointer to a filterref object. That
filterref can itself point to multiple other filterrefs, but at the
toplevel there is only one.

The parser had previously just silently overwritten earlier filterrefs
when a new one was encountered, so the interface was left with
whichever was the last filterref in the xml, ignoring all the
others. This patch logs an error when it sees more than one filterref.

src/conf/domain_conf.c

index e52119b9732780bbc17f5994720fa2737273227a..62f5f5b08bd5c1387c06073cc64e07b6cb918d8e 100644 (file)
@@ -4619,6 +4619,12 @@ virDomainNetDefParseXML(virCapsPtr caps,
                 ioeventfd = virXMLPropString(cur, "ioeventfd");
                 event_idx = virXMLPropString(cur, "event_idx");
             } else if (xmlStrEqual (cur->name, BAD_CAST "filterref")) {
+                if (filter) {
+                    virReportError(VIR_ERR_XML_ERROR, "%s",
+                                   _("Invalid specification of multiple <filterref>s "
+                                     "in a single <interface>"));
+                    goto error;
+                }
                 filter = virXMLPropString(cur, "filter");
                 virNWFilterHashTableFree(filterparams);
                 filterparams = virNWFilterParseParamAttributes(cur);