]> xenbits.xensource.com Git - libvirt.git/commitdiff
Don't copy sexpr node value that is an empty string
authorJim Fehlig <jfehlig@suse.com>
Fri, 18 Nov 2011 21:54:38 +0000 (14:54 -0700)
committerJim Fehlig <jfehlig@suse.com>
Fri, 18 Nov 2011 23:00:31 +0000 (16:00 -0700)
Xen4.1 initializes some unspecified sexpr config items to an empty
string, unlike previous Xen versions that would leave the item unset.
E.g. the kernel item for an HVM guest (non-direct kernel boot):

Xen4.0 and earlier
  ...
  (image
    (hvm
      (kernel )
  ...

Xen4.1
  ...
  (image
    (hvm
      (kernel '')
  ...

The empty string for kernel causes some grief in subsequent parsing
where existence of specified kernel is checked, e.g.

  if (!def->os.kernel)
  ...

This patch solves the problem in sexpr_node_copy() by not copying
a node containing an empty string.

src/util/sexpr.c

index 0e300870fa469de9a6a6e9275b5c5222ab176917..3523d76f28b77c5f459cf7b8d017671fecfd9837 100644 (file)
@@ -519,7 +519,7 @@ int sexpr_node_copy(const struct sexpr *sexpr, const char *node, char **dst)
 {
     const char *val = sexpr_node(sexpr, node);
 
-    if (val) {
+    if (val && *val) {
         *dst = strdup(val);
         if (!(*dst))
             return -1;