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. Perhaps somewhat different rules for each, but using some sort of type of object enum to weed out object specific rules (eg, VIR_IS_ type macros). Perhaps someone who's been on the project a bit longer has a suggestion or two... John -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list