mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-09 01:18:00 +03:00
Don't ignore errors parsing nwfilter rules
For inexplicable reasons, the nwfilter XML parser is intentionally ignoring errors that arise during parsing. As well as meaning that users don't get any feedback on their XML mistakes, this will lead it to silently drop data in OOM conditions. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
06bfe6fe2b
commit
4f2094346d
@ -2369,9 +2369,7 @@ virNWFilterRuleParse(xmlNodePtr node)
|
||||
if (virNWFilterRuleDetailsParse(cur,
|
||||
ret,
|
||||
virAttr[i].att) < 0) {
|
||||
/* we ignore malformed rules
|
||||
goto err_exit;
|
||||
*/
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -2573,11 +2571,13 @@ virNWFilterDefParseXML(xmlXPathContextPtr ctxt) {
|
||||
if (VIR_ALLOC(entry) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* ignore malformed rule and include elements */
|
||||
if (xmlStrEqual(curr->name, BAD_CAST "rule"))
|
||||
entry->rule = virNWFilterRuleParse(curr);
|
||||
else if (xmlStrEqual(curr->name, BAD_CAST "filterref"))
|
||||
entry->include = virNWFilterIncludeParse(curr);
|
||||
if (xmlStrEqual(curr->name, BAD_CAST "rule")) {
|
||||
if (!(entry->rule = virNWFilterRuleParse(curr)))
|
||||
goto cleanup;
|
||||
} else if (xmlStrEqual(curr->name, BAD_CAST "filterref")) {
|
||||
if (!(entry->include = virNWFilterIncludeParse(curr)))
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (entry->rule || entry->include) {
|
||||
if (VIR_REALLOC_N(ret->filterEntries, ret->nentries+1) < 0) {
|
||||
|
@ -36,15 +36,12 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml,
|
||||
|
||||
virResetLastError();
|
||||
|
||||
if (!(dev = virNWFilterDefParseString(NULL, inXmlData)))
|
||||
goto fail;
|
||||
|
||||
if (!!virGetLastError() != expect_error)
|
||||
goto fail;
|
||||
|
||||
if (!(dev = virNWFilterDefParseString(NULL, inXmlData))) {
|
||||
if (expect_error) {
|
||||
/* need to suppress the errors */
|
||||
virResetLastError();
|
||||
goto done;
|
||||
}
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!(actual = virNWFilterDefFormat(dev)))
|
||||
@ -55,6 +52,7 @@ testCompareXMLToXMLFiles(const char *inxml, const char *outxml,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
done:
|
||||
ret = 0;
|
||||
|
||||
fail:
|
||||
|
Loading…
Reference in New Issue
Block a user