From: Christian Brauner Date: Sat, 17 Feb 2018 16:16:52 +0000 (+0100) Subject: cgfsng: lxc_cpumask() X-Git-Tag: lxc-2.0.10~310 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3dfb52bafef30182a8cde68addaa56c3dc9d76f4;p=thirdparty%2Flxc.git cgfsng: lxc_cpumask() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index e0a516e48..f969c03ff 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -392,27 +392,33 @@ static bool is_set(unsigned bit, uint32_t *bitarr) * * 0,2-3 * - * into bit array + * into bit array * * 1 0 1 1 */ static uint32_t *lxc_cpumask(char *buf, size_t nbits) { char *token; + size_t arrlen; + uint32_t *bitarr; 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) return NULL; for (; (token = strtok_r(buf, ",", &saveptr)); buf = NULL) { 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) end = strtoul(range + 1, NULL, 0); + if (!(start <= end)) { free(bitarr); return NULL;