From: Ján Tomko Date: Mon, 19 Jan 2015 11:46:37 +0000 (+0100) Subject: qemu_conf: check for duplicate security drivers X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=d16704fd60f55251bb442d3a3efdf8dc494ce2e5;p=libvirt.git qemu_conf: check for duplicate security drivers 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 --- diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 9539231ec9..a24c5c5c59 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -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; }