[libvirt] [PATCH v2 3/4] qemu: command: escape commas in chardev socket path
Cole Robinson
crobinso at redhat.com
Fri May 6 12:11:28 UTC 2016
On 05/06/2016 07:54 AM, John Ferlan wrote:
>
>
> 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...
>
It's not specific to the autocreated socket path based on
domainChannelTargetDir, the user could have passed in a manual path with a
comma in it
The rule is that any time a user specified string is passed to the qemu
command line, we should be escaping commas. <name> happens to trickle out into
several other places, but doing this for the unix path is still beneficial
regardless of the <name> focus of this series
- Cole
More information about the libvir-list
mailing list