From 738dc3f4adcde371d8c6c23d63ec688c1f3f1458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Tue, 25 Jun 2019 13:37:16 +0200 Subject: [PATCH] conf: storage: also sanitize source dir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit a7fb2258 added sanitization of storage pool target paths, however source dir paths were left unsanitized. A netfs pool with: will not be correctly detected as mounted by virStorageBackendFileSystemIsMounted, because it shows up in the mount list without the trailing slash. Sanitize the source dir as well. https://bugzilla.redhat.com/show_bug.cgi?id=1723247 Signed-off-by: Ján Tomko Acked-by: Peter Krempa --- src/conf/storage_conf.c | 5 ++++- .../storagepoolxml2xmlin/pool-netfs-slash.xml | 20 +++++++++++++++++++ .../pool-netfs-slash.xml | 20 +++++++++++++++++++ tests/storagepoolxml2xmltest.c | 1 + 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 tests/storagepoolxml2xmlin/pool-netfs-slash.xml create mode 100644 tests/storagepoolxml2xmlout/pool-netfs-slash.xml diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 29988c36c4..397bd66870 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -533,6 +533,7 @@ virStoragePoolDefParseSource(xmlXPathContextPtr ctxt, VIR_AUTOFREE(char *) port = NULL; VIR_AUTOFREE(char *) ver = NULL; VIR_AUTOFREE(xmlNodePtr *) nodeset = NULL; + VIR_AUTOFREE(char *) sourcedir = NULL; relnode = ctxt->node; ctxt->node = node; @@ -630,7 +631,9 @@ virStoragePoolDefParseSource(xmlXPathContextPtr ctxt, } - source->dir = virXPathString("string(./dir/@path)", ctxt); + sourcedir = virXPathString("string(./dir/@path)", ctxt); + if (sourcedir) + source->dir = virFileSanitizePath(sourcedir); /* In gluster, a missing dir defaults to "/" */ if (!source->dir && pool_type == VIR_STORAGE_POOL_GLUSTER && VIR_STRDUP(source->dir, "/") < 0) diff --git a/tests/storagepoolxml2xmlin/pool-netfs-slash.xml b/tests/storagepoolxml2xmlin/pool-netfs-slash.xml new file mode 100644 index 0000000000..63f5d401ba --- /dev/null +++ b/tests/storagepoolxml2xmlin/pool-netfs-slash.xml @@ -0,0 +1,20 @@ + + nfsimages + 7641d5a8-af11-f730-a34e-0a7dfcede71f + 0 + 0 + 0 + + + + + + + /mnt + + 0700 + 0 + 0 + + + diff --git a/tests/storagepoolxml2xmlout/pool-netfs-slash.xml b/tests/storagepoolxml2xmlout/pool-netfs-slash.xml new file mode 100644 index 0000000000..8a5f272137 --- /dev/null +++ b/tests/storagepoolxml2xmlout/pool-netfs-slash.xml @@ -0,0 +1,20 @@ + + nfsimages + 7641d5a8-af11-f730-a34e-0a7dfcede71f + 0 + 0 + 0 + + + + + + + /mnt + + 0700 + 0 + 0 + + + diff --git a/tests/storagepoolxml2xmltest.c b/tests/storagepoolxml2xmltest.c index b6f4cb4226..96dd04faec 100644 --- a/tests/storagepoolxml2xmltest.c +++ b/tests/storagepoolxml2xmltest.c @@ -73,6 +73,7 @@ mymain(void) DO_TEST("pool-iscsi"); DO_TEST("pool-iscsi-auth"); DO_TEST("pool-netfs"); + DO_TEST("pool-netfs-slash"); DO_TEST("pool-netfs-auto"); DO_TEST("pool-netfs-protocol-ver"); DO_TEST("pool-netfs-gluster");