virDomainAudioOSSParse: Use virXMLProp*

This strictens the parser to disallow negative values (interpreted as
`UINT_MAX + value + 1`) for attribute `bufferCount`. Allowing negative
numbers to be interpreted this way makes no sense for this attribute.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
This commit is contained in:
Tim Wiederhake 2021-05-18 17:04:50 +02:00 committed by Laine Stump
parent 23e763eb46
commit cd4c756fd5

View File

@ -13074,26 +13074,15 @@ static int
virDomainAudioOSSParse(virDomainAudioIOOSS *def,
xmlNodePtr node)
{
g_autofree char *tryPoll = virXMLPropString(node, "tryPoll");
g_autofree char *bufferCount = virXMLPropString(node, "bufferCount");
def->dev = virXMLPropString(node, "dev");
if (tryPoll &&
((def->tryPoll =
virTristateBoolTypeFromString(tryPoll)) <= 0)) {
virReportError(VIR_ERR_XML_ERROR,
_("unknown 'tryPoll' value '%s'"), tryPoll);
if (virXMLPropTristateBool(node, "tryPoll", VIR_XML_PROP_NONE,
&def->tryPoll) < 0)
return -1;
}
if (bufferCount &&
virStrToLong_ui(bufferCount, NULL, 10,
&def->bufferCount) < 0) {
virReportError(VIR_ERR_XML_ERROR,
_("cannot parse 'bufferCount' value '%s'"), bufferCount);
if (virXMLPropUInt(node, "bufferCount", 10, VIR_XML_PROP_NONE,
&def->bufferCount) < 0)
return -1;
}
return 0;
}