}
maxcpus = libxl_bitmap_count_set(cpumap);
+ if (maxcpus == 0)
+ {
+ LOGED(ERROR, domid, "Requested 0 VCPUs!");
+ rc = ERROR_FAIL;
+ goto out;
+ }
if (maxcpus > info.vcpu_max_id + 1)
{
LOGED(ERROR, domid, "Requested %d VCPUs, however maxcpus is %d!",
*/
#include <stdlib.h>
+#include <limits.h>
#include <libxl.h>
#include <libxl_utils.h>
static int vcpuset(uint32_t domid, const char* nr_vcpus, int check_host)
{
char *endptr;
- unsigned int max_vcpus, i;
+ unsigned int i;
+ unsigned long max_vcpus;
libxl_bitmap cpumap;
int rc;
libxl_bitmap_init(&cpumap);
max_vcpus = strtoul(nr_vcpus, &endptr, 10);
- if (nr_vcpus == endptr) {
+ if (nr_vcpus == endptr || max_vcpus > INT_MAX) {
fprintf(stderr, "Error: Invalid argument.\n");
return 1;
}
if (max_vcpus > online_vcpus && max_vcpus > host_cpu) {
fprintf(stderr, "You are overcommmitting! You have %d physical" \
- " CPUs and want %d vCPUs! Aborting, use --ignore-host to" \
+ " CPUs and want %ld vCPUs! Aborting, use --ignore-host to" \
" continue\n", host_cpu, max_vcpus);
return 1;
}
if (rc == ERROR_DOMAIN_NOTFOUND)
fprintf(stderr, "Domain %u does not exist.\n", domid);
else if (rc)
- fprintf(stderr, "libxl_set_vcpuonline failed domid=%u max_vcpus=%d," \
+ fprintf(stderr, "libxl_set_vcpuonline failed domid=%u max_vcpus=%ld," \
" rc: %d\n", domid, max_vcpus, rc);
libxl_bitmap_dispose(&cpumap);