virNWFilterRuleParse: Parse 'priority' via 'virXMLPropInt'

Use modern parsing. Invalid numbers are now rejected. Semantis for
numbers out of range is preserved.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2023-02-16 13:20:03 +01:00
parent f0c5da0f24
commit 3774fca88f

View File

@ -2373,18 +2373,15 @@ virNWFilterRuleDefFixup(virNWFilterRuleDef *rule)
static virNWFilterRuleDef * static virNWFilterRuleDef *
virNWFilterRuleParse(xmlNodePtr node) virNWFilterRuleParse(xmlNodePtr node)
{ {
g_autofree char *prio = NULL;
g_autofree char *statematch = NULL; g_autofree char *statematch = NULL;
bool found; bool found;
int found_i = 0; int found_i = 0;
int priority;
xmlNodePtr cur; xmlNodePtr cur;
g_autoptr(virNWFilterRuleDef) ret = NULL; g_autoptr(virNWFilterRuleDef) ret = NULL;
ret = g_new0(virNWFilterRuleDef, 1); ret = g_new0(virNWFilterRuleDef, 1);
prio = virXMLPropString(node, "priority");
statematch = virXMLPropString(node, "statematch"); statematch = virXMLPropString(node, "statematch");
if (virXMLPropEnum(node, "action", virNWFilterRuleActionTypeFromString, if (virXMLPropEnum(node, "action", virNWFilterRuleActionTypeFromString,
@ -2395,15 +2392,12 @@ virNWFilterRuleParse(xmlNodePtr node)
VIR_XML_PROP_REQUIRED, &ret->tt) < 0) VIR_XML_PROP_REQUIRED, &ret->tt) < 0)
return NULL; return NULL;
ret->priority = MAX_RULE_PRIORITY / 2; if (virXMLPropInt(node, "priority", 10, VIR_XML_PROP_NONE, &ret->priority,
MAX_RULE_PRIORITY / 2) < 0)
return NULL;
if (prio) { if (ret->priority > MAX_RULE_PRIORITY || ret->priority < MIN_RULE_PRIORITY)
if (virStrToLong_i(prio, NULL, 10, &priority) >= 0) { ret->priority = MAX_RULE_PRIORITY / 2;
if (priority <= MAX_RULE_PRIORITY &&
priority >= MIN_RULE_PRIORITY)
ret->priority = priority;
}
}
if (statematch && if (statematch &&
(STREQ(statematch, "0") || STRCASEEQ(statematch, "false"))) (STREQ(statematch, "0") || STRCASEEQ(statematch, "false")))