[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [et-mgmt-tools] [PATCH] Fix lookup pool by path



On Wednesday 03 December 2008 17:21:47 Cole Robinson wrote:
> Andreas Schneider wrote:
> > On Monday 01 December 2008 16:07:45 Cole Robinson wrote:
> >> Hmm, so your pool xml lists the target directory with a trailing slash?
> >> I'm not seeing that. What version of libvirt are you using, and can you
> >> provide the pools xml?
> >
> > Hi,
> >
> > I'm using virt-manager to connect to a remote host, so if I create a pool
> > I have to specify the path to the pool manually.
> >
> > This means you can enter as many trailing slashes as you want. So the
> > questions is, should the slashes be stripped during the creation of the
> > pool too?
> >
> > <pool type='dir'>
> >   <name>tmp</name>
> >   <uuid>17e0c17a-3cd3-bc20-f1bc-7c9ffaceb255</uuid>
> >   <capacity>0</capacity>
> >   <allocation>0</allocation>
> >   <available>0</available>
> >   <source>
> >   </source>
> >   <target>
> >     <path>/var/lib/libvirt/images/tmp/////</path>
> >     <permissions>
> >       <mode>0700</mode>
> >       <owner>0</owner>
> >       <group>0</group>
> >     </permissions>
> >   </target>
> > </pool>
>
> Hmm, yes, seems like libvirt should be sanitizing the target path when
> the pool is defined (though virtinst could certainly do this too).
>
> Looks like there could be arbitrary '/' in the middle of the path
> though, so if you use something like os.path.abspath in your patch it
> should sanitize everything appropriately.

Thanks, this was the function I was looking for. I've attached an updated 
patch. I think it should be fixed in libvirt and virt-manager. Just to be sure 
that you can't run into the problem again.

>
> Thank,
> Cole

Cheers,


	-- andreas

-- 
Andreas Schneider, SUSE Labs, http://www.suse.de/
SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg)
Index: virtinst-0.400.0/virtinst/util.py
===================================================================
--- virtinst-0.400.0.orig/virtinst/util.py
+++ virtinst-0.400.0/virtinst/util.py
@@ -455,7 +455,8 @@ def lookup_pool_by_path(conn, path):
     pool_list = conn.listStoragePools() + conn.listDefinedStoragePools()
     for name in pool_list:
         pool = conn.storagePoolLookupByName(name)
-        if get_xml_path(pool.XMLDesc(0), "/pool/target/path") == path:
+        xml_path = get_xml_path(pool.XMLDesc(0), "/pool/target/path")
+        if os.path.abspath(xml_path) == path:
             return pool
     return None
 

Attachment: signature.asc
Description: This is a digitally signed message part.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]