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