]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: replace validation with variables passed to virXMLParse()
authorKristina Hanicova <khanicov@redhat.com>
Wed, 11 Aug 2021 12:36:48 +0000 (14:36 +0200)
committerJán Tomko <jtomko@redhat.com>
Thu, 12 Aug 2021 11:12:29 +0000 (13:12 +0200)
virXMLParse() now allows validating xml against schema directly,
eliminating the need to do it individually in each function.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
src/conf/backup_conf.c
src/conf/checkpoint_conf.c
src/conf/snapshot_conf.c

index 9307357d8443b279a7f2e811560155ec5894d4b6..694553a544e2ae2bca4786d82f746ef278f4de42 100644 (file)
@@ -281,7 +281,8 @@ virDomainBackupDefParseString(const char *xmlStr,
     g_autoptr(xmlDoc) xml = NULL;
     int keepBlanksDefault = xmlKeepBlanksDefault(0);
 
-    if ((xml = virXMLParse(NULL, xmlStr, _("(domain_backup)"), NULL, false))) {
+    if ((xml = virXMLParse(NULL, xmlStr, _("(domain_backup)"), "domainbackup.rng",
+                           !(flags & VIR_DOMAIN_BACKUP_PARSE_INTERNAL)))) {
         xmlKeepBlanksDefault(keepBlanksDefault);
         ret = virDomainBackupDefParseNode(xml, xmlDocGetRootElement(xml),
                                           xmlopt, flags);
@@ -299,23 +300,12 @@ virDomainBackupDefParseNode(xmlDocPtr xml,
                             unsigned int flags)
 {
     g_autoptr(xmlXPathContext) ctxt = NULL;
-    g_autofree char *schema = NULL;
 
     if (!virXMLNodeNameEqual(root, "domainbackup")) {
         virReportError(VIR_ERR_XML_ERROR, "%s", _("domainbackup"));
         return NULL;
     }
 
-    if (!(flags & VIR_DOMAIN_BACKUP_PARSE_INTERNAL)) {
-        if (!(schema = virFileFindResource("domainbackup.rng",
-                                           abs_top_srcdir "/docs/schemas",
-                                           PKGDATADIR "/schemas")))
-            return NULL;
-
-        if (virXMLValidateAgainstSchema(schema, xml) < 0)
-            return NULL;
-    }
-
     if (!(ctxt = virXMLXPathContextNew(xml)))
         return NULL;
 
index dd0e6035fa23440c6a9fee36a30f763764502091..d2041dd0acbddbcb3fe281f582153503c1e42b10 100644 (file)
@@ -193,22 +193,12 @@ virDomainCheckpointDefParseNode(xmlDocPtr xml,
                                 unsigned int flags)
 {
     g_autoptr(xmlXPathContext) ctxt = NULL;
-    g_autofree char *schema = NULL;
 
     if (!virXMLNodeNameEqual(root, "domaincheckpoint")) {
         virReportError(VIR_ERR_XML_ERROR, "%s", _("domaincheckpoint"));
         return NULL;
     }
 
-    /* This is a new enough API to make schema validation unconditional */
-    schema = virFileFindResource("domaincheckpoint.rng",
-                                 abs_top_srcdir "/docs/schemas",
-                                 PKGDATADIR "/schemas");
-    if (!schema)
-        return NULL;
-    if (virXMLValidateAgainstSchema(schema, xml) < 0)
-        return NULL;
-
     if (!(ctxt = virXMLXPathContextNew(xml)))
         return NULL;
 
@@ -226,7 +216,8 @@ virDomainCheckpointDefParseString(const char *xmlStr,
     xmlDocPtr xml;
     int keepBlanksDefault = xmlKeepBlanksDefault(0);
 
-    if ((xml = virXMLParse(NULL, xmlStr, _("(domain_checkpoint)"), NULL, false))) {
+    if ((xml = virXMLParse(NULL, xmlStr, _("(domain_checkpoint)"),
+                           "domaincheckpoint.rng", true))) {
         xmlKeepBlanksDefault(keepBlanksDefault);
         ret = virDomainCheckpointDefParseNode(xml, xmlDocGetRootElement(xml),
                                               xmlopt, parseOpaque, flags);
index 3282627044d56b3f0f49b37bc85aad15f9499610..6d3c59f98e794f3012d5d9c83e605174308727a8 100644 (file)
@@ -432,18 +432,6 @@ virDomainSnapshotDefParseNode(xmlDocPtr xml,
         return NULL;
     }
 
-    if (flags & VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE) {
-        g_autofree char *schema = NULL;
-
-        schema = virFileFindResource("domainsnapshot.rng",
-                                     abs_top_srcdir "/docs/schemas",
-                                     PKGDATADIR "/schemas");
-        if (!schema)
-            return NULL;
-        if (virXMLValidateAgainstSchema(schema, xml) < 0)
-            return NULL;
-    }
-
     if (!(ctxt = virXMLXPathContextNew(xml)))
         return NULL;
 
@@ -462,7 +450,8 @@ virDomainSnapshotDefParseString(const char *xmlStr,
     xmlDocPtr xml;
     int keepBlanksDefault = xmlKeepBlanksDefault(0);
 
-    if ((xml = virXMLParse(NULL, xmlStr, _("(domain_snapshot)"), NULL, false))) {
+    if ((xml = virXMLParse(NULL, xmlStr, _("(domain_snapshot)"), "domainsnapshot.rng",
+                           flags & VIR_DOMAIN_SNAPSHOT_PARSE_VALIDATE))) {
         xmlKeepBlanksDefault(keepBlanksDefault);
         ret = virDomainSnapshotDefParseNode(xml, xmlDocGetRootElement(xml),
                                             xmlopt, parseOpaque,