From 47fa3d3992b18c27d5aafb9f6503cd79cb827aad Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A1n=20Tomko?= Date: Tue, 28 Mar 2017 15:11:52 +0200 Subject: [PATCH] conf: do not steal pointers from the pool source 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 (cherry picked from commit e9f9690958b7fc86c4002c16cd2bdccba0dd07d1) --- src/conf/storage_conf.c | 5 +++-- .../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 05a1a49cee..36e579e40f 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -845,8 +845,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 0000000000..a5e0ead6d2 --- /dev/null +++ b/tests/storagepoolxml2xmlout/pool-logical-noname.xml @@ -0,0 +1,19 @@ + + zily + 1c13165a-d0f4-3aee-b447-30fb38789091 + 0 + 0 + 0 + + zily + + + + /dev/zily + + 0700 + 0 + 0 + + + diff --git a/tests/storagepoolxml2xmltest.c b/tests/storagepoolxml2xmltest.c index 2e1e811aec..37765bc4bd 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.47.3