The check that ensures that at least one property among accel3d,
accel2d and rendernode has been provided by the user had been
lost during the conversion to virXMLPropTristateBool().
Fixes: 0fe2d8dd335054fae38b46bbbac58a4662e1a1d0
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
src/conf/domain_conf.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 68191f42bd..bd98317f4d 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -14019,23 +14019,31 @@ virDomainVideoAccelDefParseXML(xmlNodePtr node)
{
g_autofree virDomainVideoAccelDef *def = NULL;
g_autofree char *rendernode = NULL;
+ virTristateBool accel3d;
+ virTristateBool accel2d;
rendernode = virXMLPropString(node, "rendernode");
-
- def = g_new0(virDomainVideoAccelDef, 1);
-
if (virXMLPropTristateBool(node, "accel3d",
- VIR_XML_PROP_NONE,
- &def->accel3d) < 0)
+ VIR_XML_PROP_NONE, &accel3d) < 0)
return NULL;
-
if (virXMLPropTristateBool(node, "accel2d",
- VIR_XML_PROP_NONE,
- &def->accel2d) < 0)
+ VIR_XML_PROP_NONE, &accel2d) < 0)
return NULL;
+ if (!rendernode &&
+ accel3d == VIR_TRISTATE_BOOL_ABSENT &&
+ accel2d == VIR_TRISTATE_BOOL_ABSENT) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("missing values for acceleration"));
+ return NULL;
+ }
+
+ def = g_new0(virDomainVideoAccelDef, 1);
+
if (rendernode)
def->rendernode = virFileSanitizePath(rendernode);
+ def->accel3d = accel3d;
+ def->accel2d = accel2d;
return g_steal_pointer(&def);
}
--
2.35.1