]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
conf: Improve metadata type verification
authorPeter Krempa <pkrempa@redhat.com>
Tue, 8 Jul 2014 13:52:32 +0000 (15:52 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 9 Jul 2014 12:40:31 +0000 (14:40 +0200)
Split out checking of invalid metadata type from the switch statement so
that we can use the typecasted enum value to allow tracking addition of
new items by the compliler.

Also avoids two dead-code break statements.

src/conf/domain_conf.c

index b80e7cf6eecdfa330d1d9599b55aa29df81c8bf1..fa76eb427c76e0680216bc8c41725235cc8c31f2 100644 (file)
@@ -19575,6 +19575,12 @@ virDomainObjGetMetadata(virDomainObjPtr vm,
     virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
                   VIR_DOMAIN_AFFECT_CONFIG, NULL);
 
+    if (type >= VIR_DOMAIN_METADATA_LAST) {
+        virReportError(VIR_ERR_INVALID_ARG,
+                       _("unknown metadata type '%d'"), type);
+        goto cleanup;
+    }
+
     if (virDomainLiveConfigHelperMethod(caps, xmlopt, vm, &flags, &def) < 0)
         goto cleanup;
 
@@ -19601,10 +19607,7 @@ virDomainObjGetMetadata(virDomainObjPtr vm,
             goto cleanup;
         break;
 
-    default:
-        virReportError(VIR_ERR_INVALID_ARG, "%s",
-                       _("unknown metadata type"));
-        goto cleanup;
+    case VIR_DOMAIN_METADATA_LAST:
         break;
     }
 
@@ -19630,6 +19633,12 @@ virDomainDefSetMetadata(virDomainDefPtr def,
     char *tmp;
     int ret = -1;
 
+    if (type >= VIR_DOMAIN_METADATA_LAST) {
+        virReportError(VIR_ERR_INVALID_ARG,
+                       _("unknown metadata type '%d'"), type);
+        goto cleanup;
+    }
+
     switch ((virDomainMetadataType) type) {
     case VIR_DOMAIN_METADATA_DESCRIPTION:
         if (VIR_STRDUP(tmp, metadata) < 0)
@@ -19683,10 +19692,7 @@ virDomainDefSetMetadata(virDomainDefPtr def,
         }
         break;
 
-    default:
-        virReportError(VIR_ERR_INVALID_ARG, "%s",
-                       _("unknown metadata type"));
-        goto cleanup;
+    case VIR_DOMAIN_METADATA_LAST:
         break;
     }