[libvirt] [PATCH] conf: log error when encountering multiple filterrefs in interface

Osier Yang jyang at redhat.com
Wed Aug 15 02:59:38 UTC 2012


On 2012年08月14日 23:06, Laine Stump wrote:
> 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 | 6 ++++++
>   1 file changed, 6 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index ae95d81..58c424f 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -4627,6 +4627,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);

ACK

Regards,
Osier




More information about the libvir-list mailing list