diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index e2a6d44106..4928695393 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -454,6 +454,7 @@ libxlDomainSetVcpuAffinities(libxlDriverPrivatePtr driver, virDomainObjPtr vm) size_t cpumaplen; int vcpu; size_t i; + size_t limit; int ret = -1; if (libxlDoNodeGetInfo(driver, &nodeinfo) < 0) @@ -470,7 +471,8 @@ libxlDomainSetVcpuAffinities(libxlDriverPrivatePtr driver, virDomainObjPtr vm) cpumask = (uint8_t*) def->cputune.vcpupin[vcpu]->cpumask; - for (i = 0; i < VIR_DOMAIN_CPUMASK_LEN; ++i) { + limit = MIN(VIR_DOMAIN_CPUMASK_LEN, cpumaplen); + for (i = 0; i < limit; ++i) { if (cpumask[i]) VIR_USE_CPU(cpumap, i); }