]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_conf: check for duplicate security drivers
authorJán Tomko <jtomko@redhat.com>
Mon, 19 Jan 2015 11:46:37 +0000 (12:46 +0100)
committerJán Tomko <jtomko@redhat.com>
Mon, 19 Jan 2015 11:46:37 +0000 (12:46 +0100)
Using the same driver multiple times is pointless and
it can result in confusing errors:

$ virsh start test
error: Failed to start domain test
error: internal error: security label already defined for VM

https://bugzilla.redhat.com/show_bug.cgi?id=1153891

src/qemu/qemu_conf.c

index 9539231ec96f65b6bb5c673269fb671523acc1ca..a24c5c5c598ac7fc493567d903c9f8e8bdabd8e1 100644 (file)
@@ -460,7 +460,7 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
 
     p = virConfGetValue(conf, "security_driver");
     if (p && p->type == VIR_CONF_LIST) {
-        size_t len;
+        size_t len, j;
         virConfValuePtr pp;
 
         /* Calc length and check items */
@@ -476,6 +476,13 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg,
             goto cleanup;
 
         for (i = 0, pp = p->list; pp; i++, pp = pp->next) {
+            for (j = 0; j < i; j++) {
+                if (STREQ(pp->str, cfg->securityDriverNames[j])) {
+                    virReportError(VIR_ERR_CONF_SYNTAX,
+                                   _("Duplicate security driver %s"), pp->str);
+                    goto cleanup;
+                }
+            }
             if (VIR_STRDUP(cfg->securityDriverNames[i], pp->str) < 0)
                 goto cleanup;
         }