On Fri, Jun 19, 2009 at 05:54:47PM +0200, Matthias Bolte wrote:
2009/6/19 Daniel P. Berrange <berrange(a)redhat.com>:
>
> ACK, looks fine to me - though I'm wondering if you might also want to
> explicitly turn off support for lists ? IIIRC the VMware config values
> were only scalars, so for safety you might want the parser to refuse
> to parse / generate lists.
>
> Daniel
>
Good advice. I've done this now and attached the patch for it. The
first patch got already commited, thanks to Daniel Veillard.
Regards,
Matthias
diff --git a/src/conf.c b/src/conf.c
index ef1a28f..c51531e 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -447,6 +447,11 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
if (str == NULL)
return(NULL);
} else if (CUR == '[') {
+ if (ctxt->conf->flags & VIR_CONF_FLAG_VMX_FORMAT) {
+ virConfError(ctxt, VIR_ERR_CONF_SYNTAX,
+ _("lists not allowed in VMX format"));
+ return(NULL);
+ }
type = VIR_CONF_LIST;
NEXT;
SKIP_BLANKS_AND_EOL;
@@ -486,6 +491,11 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
return(NULL);
}
} else if (c_isdigit(CUR) || (CUR == '-') || (CUR == '+')) {
+ if (ctxt->conf->flags & VIR_CONF_FLAG_VMX_FORMAT) {
+ virConfError(ctxt, VIR_ERR_CONF_SYNTAX,
+ _("numbers not allowed in VMX format"));
+ return(NULL);
+ }
if (virConfParseLong(ctxt, &l) < 0) {
return(NULL);
}
@@ -530,7 +540,7 @@ virConfParseName(virConfParserCtxtPtr ctxt)
}
while ((ctxt->cur < ctxt->end) &&
(c_isalnum(CUR) || (CUR == '_') ||
- ((ctxt->conf->flags & VIR_CONF_FLAG_ALLOW_VMX_NAMES) &&
+ ((ctxt->conf->flags & VIR_CONF_FLAG_VMX_FORMAT) &&
((CUR == ':') || (CUR == '.')))))
NEXT;
ret = strndup(base, ctxt->cur - base);
diff --git a/src/conf.h b/src/conf.h
index 4bb825a..40d9586 100644
--- a/src/conf.h
+++ b/src/conf.h
@@ -25,8 +25,9 @@ typedef enum {
} virConfType;
typedef enum {
- VIR_CONF_FLAG_ALLOW_VMX_NAMES = 1, /* allow : and . in names for compatibility
- with VMware VMX configuration file */
+ VIR_CONF_FLAG_VMX_FORMAT = 1, /* allow : and . in names for compatibility with
+ VMware VMX configuration file, but restrict
+ allowed value types to string only */
} virConfFlags;
static inline const char *
ACK, this looks good too.
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|