summaryrefslogtreecommitdiff
path: root/libvirt-utils.c
diff options
context:
space:
mode:
authorKonstantin Neumoin <kneumoin@virtuozzo.com>2016-11-03 20:05:52 +0300
committerPeter Krempa <pkrempa@redhat.com>2016-11-11 14:02:24 +0100
commit4a77ad764bd0a5cfdbffd55b993c1825cb72f9ea (patch)
tree9579287a5801b31cf815d7953f9fd874f36bfc69 /libvirt-utils.c
parenta03d782b3e19cb9b4681783ec1f6c88615128627 (diff)
downloadlibvirt-python-4a77ad764bd0a5cfdbffd55b993c1825cb72f9ea.tar.gz
don't overrun buffer when converting cpumapv2.5.0
If we pass large(more than cpunum) cpu mask to any libvirt_virDomainPin* function, it could leads to crash. So we have to check tuple size in virPyCpumapConvert and ignore extra tuple members. Since we allocate a zeroed buffer, we don't need to bother with setting the bits to zero. Signed-off-by: Konstantin Neumoin <kneumoin@virtuozzo.com>
Diffstat (limited to 'libvirt-utils.c')
-rw-r--r--libvirt-utils.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/libvirt-utils.c b/libvirt-utils.c
index 09cc1c3..727397d 100644
--- a/libvirt-utils.c
+++ b/libvirt-utils.c
@@ -623,7 +623,7 @@ virPyCpumapConvert(int cpunum,
return -1;
}
- for (i = 0; i < tuple_size; i++) {
+ for (i = 0; i < cpunum && i < tuple_size; i++) {
PyObject *flag = PyTuple_GetItem(pycpumap, i);
bool b;
@@ -634,12 +634,7 @@ virPyCpumapConvert(int cpunum,
if (b)
VIR_USE_CPU(*cpumapptr, i);
- else
- VIR_UNUSE_CPU(*cpumapptr, i);
}
- for (; i < cpunum; i++)
- VIR_UNUSE_CPU(*cpumapptr, i);
-
return 0;
}