John Ferlan wrote:
On 02/07/2013 08:27 AM, Christophe Fergeau wrote:
> Similarly to 790f912b4 which rejects snapshots names containing,
> this commit changes virDomainSaveXML to reject domains with a '/'
> in their name. The domain name is used as a filename, so this
> leads to unexpected results when used in combination with '..'
> ---
> src/conf/domain_conf.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 85a798d..13f4bc0 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -14728,6 +14728,13 @@ int virDomainSaveXML(const char *configDir,
> char *configFile = NULL;
> int ret = -1;
>
> + if (strchr(def->name, '/')) {
> + virReportError(VIR_ERR_XML_DETAIL,
> + _("invalid domain name '%s': name can't
contain '/'"),
> + def->name);
> + goto cleanup;
> + }
> +
> if ((configFile = virDomainConfigFile(configDir, def->name)) == NULL)
> goto cleanup;
>
>
>
Seems this should be in a more "general" location. Would the same rules apply
to
other objects (networks, storage, etc.)? What other characters should be avoided?
Having a comma, semi-colon, colon, etc. could have interesting results.
Yeah, comma is an interesting one for qemu since that delimits option
subarguments. E.g. trying to start a qemu instance with name 'foo,bar'
results in
$ virsh start "foo,bar"
error: Failed to start domain foo,bar
error: internal error process exited while connecting to monitor:
Unknown subargument bar to -name
Regards,
Jim