[libvirt] [PATCHv2] conf: Enforce ranges on cputune variables
The limits are documented at http://libvirt.org/formatdomain.html#elementsCPUTuning . Enforce them when going through XML parsing in addition to being enforced by the API. --- Notes: Version 2: - split out from the conf callback series and applied separately to the parser code src/conf/domain_conf.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index f3fca7f..371d80c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9677,6 +9677,14 @@ virDomainDefParseXML(virCapsPtr caps, goto error; } + if (def->cputune.period > 0 && + (def->cputune.period < 1000 || def->cputune.period > 1000000)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Value of cputune period must be in range " + "[1000, 1000000]")); + goto error; + } + if (virXPathLongLong("string(./cputune/quota[1])", ctxt, &def->cputune.quota) < -1) { virReportError(VIR_ERR_XML_ERROR, "%s", @@ -9684,6 +9692,15 @@ virDomainDefParseXML(virCapsPtr caps, goto error; } + if (def->cputune.quota > 0 && + (def->cputune.quota < 1000 || + def->cputune.quota > 18446744073709551)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Value of cputune quota must be in range " + "[1000, 18446744073709551]")); + goto error; + } + if (virXPathULongLong("string(./cputune/emulator_period[1])", ctxt, &def->cputune.emulator_period) < -1) { virReportError(VIR_ERR_XML_ERROR, "%s", @@ -9691,6 +9708,15 @@ virDomainDefParseXML(virCapsPtr caps, goto error; } + if (def->cputune.emulator_period > 0 && + (def->cputune.emulator_period < 1000 || + def->cputune.emulator_period > 1000000)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Value of cputune emulator_period must be in range " + "[1000, 1000000]")); + goto error; + } + if (virXPathLongLong("string(./cputune/emulator_quota[1])", ctxt, &def->cputune.emulator_quota) < -1) { virReportError(VIR_ERR_XML_ERROR, "%s", @@ -9698,6 +9724,15 @@ virDomainDefParseXML(virCapsPtr caps, goto error; } + if (def->cputune.emulator_quota > 0 && + (def->cputune.emulator_quota < 1000 || + def->cputune.emulator_quota > 18446744073709551)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Value of cputune emulator_quota must be in range " + "[1000, 18446744073709551]")); + goto error; + } + if ((n = virXPathNodeSet("./cputune/vcpupin", ctxt, &nodes)) < 0) goto error; -- 1.8.1.5
On 03/31/2013 10:35 AM, Peter Krempa wrote:
The limits are documented at http://libvirt.org/formatdomain.html#elementsCPUTuning . Enforce them when going through XML parsing in addition to being enforced by the API. ---
Notes: Version 2: - split out from the conf callback series and applied separately to the parser code
src/conf/domain_conf.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
ACK. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
On 04/01/13 19:11, Eric Blake wrote:
On 03/31/2013 10:35 AM, Peter Krempa wrote:
The limits are documented at http://libvirt.org/formatdomain.html#elementsCPUTuning . Enforce them when going through XML parsing in addition to being enforced by the API. ---
Notes: Version 2: - split out from the conf callback series and applied separately to the parser code
src/conf/domain_conf.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
ACK.
Pushed. Thanks. Peter
participants (2)
- 
                
Eric Blake - 
                
Peter Krempa