[libvirt PATCH 6/9] cpu: Validate XML

Peter Krempa pkrempa at redhat.com
Tue Sep 29 09:12:39 UTC 2020


On Mon, Sep 21, 2020 at 15:07:29 +0200, Tim Wiederhake wrote:

The summary of the commit is misleading. This patch doesn't do any
validation but rather wires in the validation code to various places
without enabling it.

> Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> ---

[...]

> diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
> index dea950ce68..40d8da4a8e 100644
> --- a/src/conf/cpu_conf.c
> +++ b/src/conf/cpu_conf.c
> @@ -20,9 +20,11 @@
>  
>  #include <config.h>
>  
> +#include "configmake.h"

This is suspicious. Why did you add this line?

>  #include "virerror.h"
>  #include "viralloc.h"
>  #include "virbuffer.h"
> +#include "virfile.h"
>  #include "cpu_conf.h"
>  #include "domain_conf.h"
>  #include "virstring.h"

[...]

> @@ -348,6 +352,22 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
>          return -1;
>      }
>  
> +    if (validateXML) {
> +        g_autofree char *schemafile = NULL;
> +
> +        if (!(schemafile = virFileFindResource("cpu.rng",
> +                                               abs_top_srcdir "/docs/schemas",
> +                                               PKGDATADIR "/schemas")))
> +            return -1;
> +
> +        if (virXMLValidateNodeAgainstSchema(schemafile, ctxt->doc,
> +                                            ctxt->node) < 0) {
> +            virReportError(VIR_ERR_XML_ERROR, "%s",
> +                           _("'cpu' element is not valid"));

virXMLValidateNodeAgainstSchema calls virXMLValidateAgainstSchema which
calls virXMLValidatorValidate which already reports an error.

> +            return -1;
> +        }
> +    }
> +
>      def = virCPUDefNew();
>  
>      if (type == VIR_CPU_TYPE_AUTO) {




More information about the libvir-list mailing list