[libvirt] [PATCH 2/2] conf: do not steal pointers from the pool source

Ján Tomko jtomko at redhat.com
Tue Mar 28 13:22:08 UTC 2017


Since commit fcbbb28 we steal the pointer to the storage pool
source name if there was no pool name specified.

Properly duplicate the string to avoid freeing it twice.

https://bugzilla.redhat.com/show_bug.cgi?id=1436400
---
 src/conf/storage_conf.c                             |  5 +++--
 tests/storagepoolxml2xmlout/pool-logical-noname.xml | 19 +++++++++++++++++++
 tests/storagepoolxml2xmltest.c                      |  1 +
 3 files changed, 23 insertions(+), 2 deletions(-)
 create mode 100644 tests/storagepoolxml2xmlout/pool-logical-noname.xml

diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 585ca71..fe0f0bc 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -710,8 +710,9 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
 
     ret->name = virXPathString("string(./name)", ctxt);
     if (ret->name == NULL &&
-        options->flags & VIR_STORAGE_POOL_SOURCE_NAME)
-        ret->name = ret->source.name;
+        options->flags & VIR_STORAGE_POOL_SOURCE_NAME &&
+        VIR_STRDUP(ret->name, ret->source.name) < 0)
+        goto error;
     if (ret->name == NULL) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("missing pool source name element"));
diff --git a/tests/storagepoolxml2xmlout/pool-logical-noname.xml b/tests/storagepoolxml2xmlout/pool-logical-noname.xml
new file mode 100644
index 0000000..a5e0ead
--- /dev/null
+++ b/tests/storagepoolxml2xmlout/pool-logical-noname.xml
@@ -0,0 +1,19 @@
+<pool type='logical'>
+  <name>zily</name>
+  <uuid>1c13165a-d0f4-3aee-b447-30fb38789091</uuid>
+  <capacity unit='bytes'>0</capacity>
+  <allocation unit='bytes'>0</allocation>
+  <available unit='bytes'>0</available>
+  <source>
+    <name>zily</name>
+    <format type='lvm2'/>
+  </source>
+  <target>
+    <path>/dev/zily</path>
+    <permissions>
+      <mode>0700</mode>
+      <owner>0</owner>
+      <group>0</group>
+    </permissions>
+  </target>
+</pool>
diff --git a/tests/storagepoolxml2xmltest.c b/tests/storagepoolxml2xmltest.c
index 79bdc26..355871c 100644
--- a/tests/storagepoolxml2xmltest.c
+++ b/tests/storagepoolxml2xmltest.c
@@ -79,6 +79,7 @@ mymain(void)
     DO_TEST("pool-logical");
     DO_TEST("pool-logical-nopath");
     DO_TEST("pool-logical-create");
+    DO_TEST("pool-logical-noname");
     DO_TEST("pool-disk");
     DO_TEST("pool-disk-device-nopartsep");
     DO_TEST("pool-iscsi");
-- 
2.10.2




More information about the libvir-list mailing list