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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux