[libvirt] [PATCH] conf: Enforce scheduler name when parsing XML

Erik Skultety eskultet at redhat.com
Tue Jun 23 13:01:06 UTC 2015



On 06/23/2015 02:28 PM, Peter Krempa wrote:
> We require the scheduler name attribute in the schemas but the code
> would actually be fine when it was omitted. Make it mandatory.
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1234729
> ---
>  src/conf/domain_conf.c | 49 ++++++++++++++++++++++++++-----------------------
>  1 file changed, 26 insertions(+), 23 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index e592adf..183e66c 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -14153,32 +14153,35 @@ virDomainThreadSchedParse(xmlNodePtr node,
>      }
>      VIR_FREE(tmp);
> 
> -    tmp = virXMLPropString(node, "scheduler");
> -    if (tmp) {
> -        if ((pol = virProcessSchedPolicyTypeFromString(tmp)) <= 0) {
> -            virReportError(VIR_ERR_INTERNAL_ERROR,
> -                           _("Invalid scheduler attribute: '%s'"),
> -                           tmp);
> +    if (!(tmp = virXMLPropString(node, "scheduler"))) {
> +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                       _("Missing scheduler attribute"));
> +        goto error;
> +    }
> +
> +    if ((pol = virProcessSchedPolicyTypeFromString(tmp)) <= 0) {
> +        virReportError(VIR_ERR_INTERNAL_ERROR,
> +                       _("Invalid scheduler attribute: '%s'"),
> +                       tmp);
> +        goto error;
> +    }
> +    sp->policy = pol;
> +
> +    VIR_FREE(tmp);
> +    if (sp->policy == VIR_PROC_POLICY_FIFO ||
> +        sp->policy == VIR_PROC_POLICY_RR) {
> +        tmp = virXMLPropString(node, "priority");
> +        if (!tmp) {
> +            virReportError(VIR_ERR_XML_ERROR, "%s",
> +                           _("Missing scheduler priority"));
>              goto error;
>          }
> -        sp->policy = pol;
> -
> -        VIR_FREE(tmp);
> -        if (sp->policy == VIR_PROC_POLICY_FIFO ||
> -            sp->policy == VIR_PROC_POLICY_RR) {
> -            tmp = virXMLPropString(node, "priority");
> -            if (!tmp) {
> -                virReportError(VIR_ERR_XML_ERROR, "%s",
> -                               _("Missing scheduler priority"));
> -                goto error;
> -            }
> -            if (virStrToLong_i(tmp, NULL, 10, &sp->priority) < 0) {
> -                virReportError(VIR_ERR_XML_ERROR, "%s",
> -                               _("Invalid value for element priority"));
> -                goto error;
> -            }
> -            VIR_FREE(tmp);
> +        if (virStrToLong_i(tmp, NULL, 10, &sp->priority) < 0) {
> +            virReportError(VIR_ERR_XML_ERROR, "%s",
> +                           _("Invalid value for element priority"));
> +            goto error;
>          }
> +        VIR_FREE(tmp);
>      }
> 
>      return 0;
> 

ACK.

Erik




More information about the libvir-list mailing list