diff --git a/NEWS b/NEWS index 962fddc740d2bc093c6107793fb4dc3b9178a752..8e500679a2df7b9a4f5377c2c0b86bb60fb696ca 100644 --- a/NEWS +++ b/NEWS @@ -134,6 +134,8 @@ documents those changes that are of interest to users and admins. * Changes in Slurm 2.6.5 ======================== + -- Correction to hostlist parsing bug introduced in v2.6.4 for hostlists with + more than one numeric range in brackets (e.g. rack[0-3]_blade[0-63]"). * Changes in Slurm 2.6.4 ======================== diff --git a/src/common/hostlist.c b/src/common/hostlist.c index 2e887e36f436d8f450ef8306133c4b089788b90f..4fa6ed7afbc29c24713a9d5eeff5fea174c6244d 100644 --- a/src/common/hostlist.c +++ b/src/common/hostlist.c @@ -1829,7 +1829,7 @@ _push_range_list(hostlist_t hl, char *prefix, struct _range *range, if (((p = strrchr(tmp_prefix, '[')) != NULL) && ((q = strrchr(p, ']')) != NULL)) { struct _range *prefix_range; - struct _range *saved_range = range, *pre_range = prefix_range; + struct _range *saved_range = range, *pre_range; unsigned long j, prefix_cnt = 0; *p++ = '\0'; *q++ = '\0'; @@ -1841,6 +1841,7 @@ _push_range_list(hostlist_t hl, char *prefix, struct _range *range, xfree(prefix_range); return -1; /* bad numeric expression */ } + pre_range = prefix_range; for (i = 0; i < nr; i++) { prefix_cnt += pre_range->hi - pre_range->lo + 1; if (prefix_cnt > MAX_PREFIX_CNT) {