From: Eric Blake Date: Tue, 29 Nov 2011 20:23:17 +0000 (-0700) Subject: conf: reject duplicate paths in device weights X-Git-Tag: v0.9.8-rc1~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b524ff0404de655654cd610f8886ea220b59b96;p=thirdparty%2Flibvirt.git conf: reject duplicate paths in device weights The next patch will make it possible to have virDomainSetBlkioParameters leave device weights unchanged if they are not mentioned in the incoming string, but this only works if the list of block weights does not allow duplicate paths. Technically, a user can still confuse libvirt by passing alternate spellings that resolve to the same device, but it is not worth worrying about working around that kind of abuse. * src/conf/domain_conf.c (virDomainDefParseXML): Require unique paths. --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 7ed2c35a17..d1f8a76db1 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6969,10 +6969,20 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, goto no_memory; for (i = 0; i < n; i++) { + int j; if (virDomainBlkioDeviceWeightParseXML(nodes[i], &def->blkio.devices[i]) < 0) goto error; def->blkio.ndevices++; + for (j = 0; j < i; j++) { + if (STREQ(def->blkio.devices[j].path, + def->blkio.devices[i].path)) { + virDomainReportError(VIR_ERR_XML_ERROR, + _("duplicate device weight path '%s'"), + def->blkio.devices[i].path); + goto error; + } + } } VIR_FREE(nodes);