On 12/05/2010 12:57 AM, Daniel Veillard wrote: > On Fri, Dec 03, 2010 at 02:56:14PM -0700, Eric Blake wrote: >> The log lists things like -smbios type=1,vendor="Red Hat", which >> is great for shell parsing, but not so great when you realize that >> execve() then passes those literal "" on as part of the command >> line argument, such that qemu sets SMBIOS with extra literal quotes. > > Hum, I was afraid that QEmu parsing would fail in case of spaces if > there is no quote, but if you checked this, sure ! What's happening here is that we are building up execve arguments, and supplying roughly: "qemu" "-smbios" "type=0,vendor=\"Red Hat\",version=\"Fedora 14\"" instead of the intended: "qemu" "-smbios" "type=0,vendor=Red Hat,version=Fedora 14" Although qemu uses a hand-rolled loop instead of getsubopt(), it looks like qemu is using the same algorithm as getsubopt, where it parses everything between '=' and ',', including spaces, as the subopt argument. At any rate, yes, I did test this; the only thing you can't pass through qemu's -smbios is a literal comma, but that's already excluded from our domain.rng schema. :) > ACK, Thanks; I've pushed 1 through 4; I'm waiting to push 5 until after my virCommand buffer patches have been ACK'd, so as to avoid any question of any potential NULL dereferences due to the virCommandSetOutputBuffer calls. -- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list