提交 d37bca86 编写于 作者: J Jim Meyering

libvirt.c: don't let a NULL "cpumaps" argument provoke a NULL-deref

* src/libvirt.c (virDomainGetVcpus): Describe new, stronger
requirement on "maplen"s relationship to "cpumaps".
上级 643ee3fa
...@@ -4753,6 +4753,7 @@ error: ...@@ -4753,6 +4753,7 @@ error:
* virDomainPinVcpu() API. * virDomainPinVcpu() API.
* @maplen: number of bytes in one cpumap, from 1 up to size of CPU map in * @maplen: number of bytes in one cpumap, from 1 up to size of CPU map in
* underlying virtualization system (Xen...). * underlying virtualization system (Xen...).
* Must be zero when cpumaps is NULL and positive when it is non-NULL.
* *
* Extract information about virtual CPUs of domain, store it in info array * Extract information about virtual CPUs of domain, store it in info array
* and also in cpumaps if this pointer isn't NULL. * and also in cpumaps if this pointer isn't NULL.
...@@ -4776,7 +4777,11 @@ virDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo, ...@@ -4776,7 +4777,11 @@ virDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__); virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
goto error; goto error;
} }
if (cpumaps != NULL && maplen < 1) {
/* Ensure that domainGetVcpus (aka remoteDomainGetVcpus) does not
try to memcpy anything into a NULL pointer. */
if ((cpumaps == NULL && maplen != 0)
|| (cpumaps && maplen <= 0)) {
virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__); virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
goto error; goto error;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册