From 9b524ff0404de655654cd610f8886ea220b59b96 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Tue, 29 Nov 2011 13:23:17 -0700 Subject: [PATCH] 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. --- src/conf/domain_conf.c | 10 ++++++++++ 1 file changed, 10 insertions(+) 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); -- GitLab