[libvirt] [PATCH v2 3/4] qemu: command: escape commas in chardev socket path
John Ferlan
jferlan at redhat.com
Fri May 6 11:54:00 UTC 2016
On 05/04/2016 10:56 AM, Cole Robinson wrote:
> After this, a default virt-manager VM will startup with a comma
> in the VM name:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=639926
> ---
> src/qemu/qemu_command.c | 9 ++++-----
> tests/qemuxml2argvdata/qemuxml2argv-name-escape.args | 2 +-
> 2 files changed, 5 insertions(+), 6 deletions(-)
>
FWIW:
w/r/t my comment in your v1 about vmagent... It's the "guest_agent" I
was thinking about. In any case, I see it uses the chardev path
generation code, so I think that's covered by your patch 3.
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index d54d0d1..c2f55b5 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -4833,11 +4833,10 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
> break;
>
> case VIR_DOMAIN_CHR_TYPE_UNIX:
> - virBufferAsprintf(&buf,
> - "socket,id=char%s,path=%s%s",
> - alias,
> - dev->data.nix.path,
> - dev->data.nix.listen ? ",server,nowait" : "");
> + virBufferAsprintf(&buf, "socket,id=char%s,path=", alias);
> + virBufferEscape(&buf, ',', ",", "%s", dev->data.nix.path);
Unless you know/see that the data.nix.path is built using
domainChannelTargetDir during qemuBuildChannelsCommandLine it may not be
"intuitively obvious" why doing the escape here is necessary...
John
> + if (dev->data.nix.listen)
> + virBufferAddLit(&buf, ",server,nowait");
> break;
>
> case VIR_DOMAIN_CHR_TYPE_SPICEVMC:
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-name-escape.args b/tests/qemuxml2argvdata/qemuxml2argv-name-escape.args
> index a5e35b8..772d94f 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-name-escape.args
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-name-escape.args
> @@ -15,7 +15,7 @@ bar/master-key.aes \
> -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> -nographic \
> -nodefaults \
> --chardev socket,id=charmonitor,path=/tmp/lib/domain--1-foo,bar/monitor.sock,\
> +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-foo,,bar/monitor.sock,\
> server,nowait \
> -mon chardev=charmonitor,id=monitor,mode=readline \
> -no-acpi \
>
More information about the libvir-list
mailing list