mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-29 17:33:09 +00:00
qemu: range check numa memory placement mode
https://bugzilla.redhat.com/show_bug.cgi?id=1047234 Add a range check for supported numa memory placement modes provided by the user before setting them in the domain definition. Without the check the user is able to provide a (yet) unknown mode which is then stored in the domain definition. This potentially causes a NULL dereference when the defintion is formatted into the XML. To reproduce run: virsh numatune DOMNAME --mode 6 --nodeset 0 The XML will then contain: <numatune> <memory mode='(null)' nodeset='0'/> </numatune> With this fix, the command fails: error: Unable to change numa parameters error: invalid argument: unsupported numa_mode: '6'
This commit is contained in:
parent
8b573a6b0d
commit
6e7490c734
@ -8276,6 +8276,14 @@ qemuDomainSetNumaParameters(virDomainPtr dom,
|
|||||||
if (STREQ(param->field, VIR_DOMAIN_NUMA_MODE)) {
|
if (STREQ(param->field, VIR_DOMAIN_NUMA_MODE)) {
|
||||||
int mode = param->value.i;
|
int mode = param->value.i;
|
||||||
|
|
||||||
|
if (mode >= VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_LAST ||
|
||||||
|
mode < VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_DEFAULT)
|
||||||
|
{
|
||||||
|
virReportError(VIR_ERR_INVALID_ARG,
|
||||||
|
_("unsupported numa_mode: '%d'"), mode);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
|
if ((flags & VIR_DOMAIN_AFFECT_LIVE) &&
|
||||||
vm->def->numatune.memory.mode != mode) {
|
vm->def->numatune.memory.mode != mode) {
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||||
|
Loading…
Reference in New Issue
Block a user