]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: xml: Add wrapper for 'xmlNewNode'
authorPeter Krempa <pkrempa@redhat.com>
Wed, 24 Feb 2021 08:35:05 +0000 (09:35 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 2 Mar 2021 08:50:19 +0000 (09:50 +0100)
Add a wrapper that will handle the out of memory condition by abort()
and also prevents callers from having to typecast the argument.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
src/conf/domain_conf.c
src/libvirt_private.syms
src/util/virxml.c
src/util/virxml.h
src/vbox/vbox_snapshot_conf.c
tools/virsh-domain.c

index 4179c88fcde4eb6738fc3993001041be68e93316..a27fac4a29661ef77d1a9837b3b0a7d165c27bd1 100644 (file)
@@ -30455,11 +30455,8 @@ virDomainDefSetMetadata(virDomainDefPtr def,
                 return -1;
 
             /* create the root node if needed */
-            if (!def->metadata &&
-                !(def->metadata = xmlNewNode(NULL, (unsigned char *)"metadata"))) {
-                virReportOOMError();
-                return -1;
-            }
+            if (!def->metadata)
+                def->metadata = virXMLNewNode(NULL, "metadata");
 
             if (!(new = xmlCopyNode(doc->children, 1))) {
                 virReportOOMError();
index 79fee2f0b957cac72fa92569248b9921c0dd1575..c921ef0dc04058511028c14232d1d283159c62c8 100644 (file)
@@ -3535,6 +3535,7 @@ virXMLBufferCreate;
 virXMLCheckIllegalChars;
 virXMLExtractNamespaceXML;
 virXMLFormatElement;
+virXMLNewNode;
 virXMLNodeContentString;
 virXMLNodeNameEqual;
 virXMLNodeSanitizeNamespaces;
index 3fed2b2a6efe0b65dae366d48c2d28ecd979d58e..ebe479f5d3caa202e0953ae59acac7cd9d7e83df 100644 (file)
@@ -1474,3 +1474,16 @@ virXMLBufferCreate(void)
 
     return ret;
 }
+
+
+xmlNodePtr
+virXMLNewNode(xmlNsPtr ns,
+              const char *name)
+{
+    xmlNodePtr ret;
+
+    if (!(ret = xmlNewNode(ns, BAD_CAST name)))
+        abort();
+
+    return ret;
+}
index 24a2234506195abbf4923b47f9281fcacbec05bb..d32f77b867455ca85e748526f8b53c4342e0ace1 100644 (file)
@@ -289,3 +289,7 @@ int virParseScaledValue(const char *xpath,
 
 xmlBufferPtr
 virXMLBufferCreate(void);
+
+xmlNodePtr
+virXMLNewNode(xmlNsPtr ns,
+              const char *name);
index f1cae3039a83aca46dcad8d3ddbbbc4c526b532f..5792d3175e675f91b9663a6ffe0549f96afde729 100644 (file)
@@ -328,7 +328,7 @@ virVBoxSnapshotConfCreateHardDiskNode(virVBoxSnapshotConfHardDiskPtr hardDisk)
     int result = -1;
     size_t i = 0;
     char *uuid = NULL;
-    xmlNodePtr ret = xmlNewNode(NULL, BAD_CAST "HardDisk");
+    xmlNodePtr ret = virXMLNewNode(NULL, "HardDisk");
     uuid = g_strdup_printf("{%s}", hardDisk->uuid);
 
     if (xmlNewProp(ret, BAD_CAST "uuid", BAD_CAST uuid) == NULL)
@@ -404,7 +404,7 @@ virVBoxSnapshotConfSerializeSnapshot(xmlNodePtr node,
 
     /* node description */
     if (snapshot->description != NULL) {
-        descriptionNode = xmlNewNode(NULL, BAD_CAST "Description");
+        descriptionNode = virXMLNewNode(NULL, "Description");
         xmlNodeSetContent(descriptionNode, BAD_CAST snapshot->description);
         xmlAddChild(node, descriptionNode);
     }
@@ -433,10 +433,10 @@ virVBoxSnapshotConfSerializeSnapshot(xmlNodePtr node,
     xmlAddChild(node, storageControllerNode);
 
     if (snapshot->nchildren > 0) {
-        snapshotsNode = xmlNewNode(NULL, BAD_CAST "Snapshots");
+        snapshotsNode = virXMLNewNode(NULL, "Snapshots");
         xmlAddChild(node, snapshotsNode);
         for (i = 0; i < snapshot->nchildren; i++) {
-            xmlNodePtr child = xmlNewNode(NULL, BAD_CAST "Snapshot");
+            xmlNodePtr child = virXMLNewNode(NULL, "Snapshot");
             xmlAddChild(snapshotsNode, child);
             if (virVBoxSnapshotConfSerializeSnapshot(child, snapshot->children[i]) < 0)
                 goto cleanup;
@@ -1001,11 +1001,7 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachinePtr machine,
         goto cleanup;
     }
 
-    cur = xmlNewNode(NULL, BAD_CAST "VirtualBox");
-    if (!cur) {
-        virReportOOMError();
-        goto cleanup;
-    }
+    cur = virXMLNewNode(NULL, "VirtualBox");
 
     if (!xmlNewProp(cur, BAD_CAST "version", BAD_CAST "1.12-linux")) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -1038,11 +1034,7 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachinePtr machine,
         goto cleanup;
     }
 
-    machineNode = xmlNewNode(NULL, BAD_CAST "Machine");
-    if (!machineNode) {
-        virReportOOMError();
-        goto cleanup;
-    }
+    machineNode = virXMLNewNode(NULL, "Machine");
 
     if (!xmlNewProp(machineNode, BAD_CAST "uuid", BAD_CAST machine->uuid)) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -1101,11 +1093,7 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachinePtr machine,
     }
     xmlAddChild(xmlDocGetRootElement(xml), machineNode);
 
-    mediaRegistryNode = xmlNewNode(NULL, BAD_CAST "MediaRegistry");
-    if (!mediaRegistryNode) {
-        virReportOOMError();
-        goto cleanup;
-    }
+    mediaRegistryNode = virXMLNewNode(NULL, "MediaRegistry");
 
     xmlAddChild(machineNode, mediaRegistryNode);
     for (i = 0; i < machine->mediaRegistry->notherMedia; i++) {
@@ -1121,11 +1109,7 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachinePtr machine,
         }
         xmlAddChild(mediaRegistryNode, cur);
     }
-    hardDisksNode = xmlNewNode(NULL, BAD_CAST "HardDisks");
-    if (!hardDisksNode) {
-        virReportOOMError();
-        goto cleanup;
-    }
+    hardDisksNode = virXMLNewNode(NULL, "HardDisks");
     for (i = 0; i < machine->mediaRegistry->ndisks; i++) {
         xmlNodePtr child = virVBoxSnapshotConfCreateHardDiskNode(machine->mediaRegistry->disks[i]);
         if (child != NULL)
@@ -1172,7 +1156,7 @@ virVBoxSnapshotConfSaveVboxFile(virVBoxSnapshotConfMachinePtr machine,
     xmlAddChild(machineNode, cur);
 
     if (machine->snapshot != NULL) {
-        snapshotNode = xmlNewNode(NULL, BAD_CAST "Snapshot");
+        snapshotNode = virXMLNewNode(NULL, "Snapshot");
         xmlAddChild(machineNode, snapshotNode);
         if (virVBoxSnapshotConfSerializeSnapshot(snapshotNode, machine->snapshot) < 0) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
index d24654c7c43f0306f6f2edf4b30671aa84328085..f8f36ce36180a9cb659ed690ad5eb550d1b35485 100644 (file)
@@ -12559,10 +12559,7 @@ virshUpdateDiskXML(xmlNodePtr disk_node,
 
     if (new_source) {
         /* create new source subelement */
-        if (!(source = xmlNewNode(NULL, BAD_CAST "source"))) {
-            vshError(NULL, _("Failed to allocate new source node"));
-            goto cleanup;
-        }
+        source = virXMLNewNode(NULL, "source");
 
         if (source_block)
             xmlNewProp(source, BAD_CAST "dev", BAD_CAST new_source);