mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-04 21:35:45 +00:00
conf: storage: also sanitize source dir
Commit a7fb2258
added sanitization of storage pool target paths,
however source dir paths were left unsanitized.
A netfs pool with:
<source>
<host name='10.20.30.40'/>
<dir path='/nfs/'/>
</source>
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 <jtomko@redhat.com>
Acked-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
4fc8449691
commit
738dc3f4ad
@ -533,6 +533,7 @@ virStoragePoolDefParseSource(xmlXPathContextPtr ctxt,
|
|||||||
VIR_AUTOFREE(char *) port = NULL;
|
VIR_AUTOFREE(char *) port = NULL;
|
||||||
VIR_AUTOFREE(char *) ver = NULL;
|
VIR_AUTOFREE(char *) ver = NULL;
|
||||||
VIR_AUTOFREE(xmlNodePtr *) nodeset = NULL;
|
VIR_AUTOFREE(xmlNodePtr *) nodeset = NULL;
|
||||||
|
VIR_AUTOFREE(char *) sourcedir = NULL;
|
||||||
|
|
||||||
relnode = ctxt->node;
|
relnode = ctxt->node;
|
||||||
ctxt->node = 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 "/" */
|
/* In gluster, a missing dir defaults to "/" */
|
||||||
if (!source->dir && pool_type == VIR_STORAGE_POOL_GLUSTER &&
|
if (!source->dir && pool_type == VIR_STORAGE_POOL_GLUSTER &&
|
||||||
VIR_STRDUP(source->dir, "/") < 0)
|
VIR_STRDUP(source->dir, "/") < 0)
|
||||||
|
20
tests/storagepoolxml2xmlin/pool-netfs-slash.xml
Normal file
20
tests/storagepoolxml2xmlin/pool-netfs-slash.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<pool type='netfs'>
|
||||||
|
<name>nfsimages</name>
|
||||||
|
<uuid>7641d5a8-af11-f730-a34e-0a7dfcede71f</uuid>
|
||||||
|
<capacity>0</capacity>
|
||||||
|
<allocation>0</allocation>
|
||||||
|
<available>0</available>
|
||||||
|
<source>
|
||||||
|
<host name='localhost'/>
|
||||||
|
<dir path='/var/lib/libvirt/images/'/>
|
||||||
|
<format type='nfs'/>
|
||||||
|
</source>
|
||||||
|
<target>
|
||||||
|
<path>/mnt</path>
|
||||||
|
<permissions>
|
||||||
|
<mode>0700</mode>
|
||||||
|
<owner>0</owner>
|
||||||
|
<group>0</group>
|
||||||
|
</permissions>
|
||||||
|
</target>
|
||||||
|
</pool>
|
20
tests/storagepoolxml2xmlout/pool-netfs-slash.xml
Normal file
20
tests/storagepoolxml2xmlout/pool-netfs-slash.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<pool type='netfs'>
|
||||||
|
<name>nfsimages</name>
|
||||||
|
<uuid>7641d5a8-af11-f730-a34e-0a7dfcede71f</uuid>
|
||||||
|
<capacity unit='bytes'>0</capacity>
|
||||||
|
<allocation unit='bytes'>0</allocation>
|
||||||
|
<available unit='bytes'>0</available>
|
||||||
|
<source>
|
||||||
|
<host name='localhost'/>
|
||||||
|
<dir path='/var/lib/libvirt/images'/>
|
||||||
|
<format type='nfs'/>
|
||||||
|
</source>
|
||||||
|
<target>
|
||||||
|
<path>/mnt</path>
|
||||||
|
<permissions>
|
||||||
|
<mode>0700</mode>
|
||||||
|
<owner>0</owner>
|
||||||
|
<group>0</group>
|
||||||
|
</permissions>
|
||||||
|
</target>
|
||||||
|
</pool>
|
@ -73,6 +73,7 @@ mymain(void)
|
|||||||
DO_TEST("pool-iscsi");
|
DO_TEST("pool-iscsi");
|
||||||
DO_TEST("pool-iscsi-auth");
|
DO_TEST("pool-iscsi-auth");
|
||||||
DO_TEST("pool-netfs");
|
DO_TEST("pool-netfs");
|
||||||
|
DO_TEST("pool-netfs-slash");
|
||||||
DO_TEST("pool-netfs-auto");
|
DO_TEST("pool-netfs-auto");
|
||||||
DO_TEST("pool-netfs-protocol-ver");
|
DO_TEST("pool-netfs-protocol-ver");
|
||||||
DO_TEST("pool-netfs-gluster");
|
DO_TEST("pool-netfs-gluster");
|
||||||
|
Loading…
Reference in New Issue
Block a user