cgfsng: lxc_cpumask()

parent 9bc23170
...@@ -399,20 +399,26 @@ static bool is_set(unsigned bit, uint32_t *bitarr) ...@@ -399,20 +399,26 @@ static bool is_set(unsigned bit, uint32_t *bitarr)
static uint32_t *lxc_cpumask(char *buf, size_t nbits) static uint32_t *lxc_cpumask(char *buf, size_t nbits)
{ {
char *token; char *token;
size_t arrlen;
uint32_t *bitarr;
char *saveptr = NULL; char *saveptr = NULL;
size_t arrlen = BITS_TO_LONGS(nbits);
uint32_t *bitarr = calloc(arrlen, sizeof(uint32_t)); arrlen = BITS_TO_LONGS(nbits);
bitarr = calloc(arrlen, sizeof(uint32_t));
if (!bitarr) if (!bitarr)
return NULL; return NULL;
for (; (token = strtok_r(buf, ",", &saveptr)); buf = NULL) { for (; (token = strtok_r(buf, ",", &saveptr)); buf = NULL) {
errno = 0; errno = 0;
unsigned start = strtoul(token, NULL, 0); unsigned end, start;
unsigned end = start; char *range;
char *range = strchr(token, '-'); start = strtoul(token, NULL, 0);
end = start;
range = strchr(token, '-');
if (range) if (range)
end = strtoul(range + 1, NULL, 0); end = strtoul(range + 1, NULL, 0);
if (!(start <= end)) { if (!(start <= end)) {
free(bitarr); free(bitarr);
return NULL; return NULL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment