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

Ján Tomko posted 2 patches 8 years, 10 months ago
[libvirt] [PATCH 2/2] conf: do not steal pointers from the pool source
Posted by Ján Tomko 8 years, 10 months ago
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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 2/2] conf: do not steal pointers from the pool source
Posted by Martin Kletzander 8 years, 10 months ago
On Tue, Mar 28, 2017 at 03:22:08PM +0200, Ján Tomko wrote:
>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
>

The ACK from the previous one was meant for both patches, but I didn't
mention it for some reason.  So ACK to this one as well.
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list