[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