From 31401582c28f730b1a1d288ae9243d54c4219e70 Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Fri, 24 Oct 2014 11:27:38 -0700
Subject: [PATCH] Ignore Allow/DenyQOS in part if QOS not configured

Previous logic would fail an assert
---
 src/slurmctld/read_config.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/slurmctld/read_config.c b/src/slurmctld/read_config.c
index 38501b195d6..4e9d0617f04 100644
--- a/src/slurmctld/read_config.c
+++ b/src/slurmctld/read_config.c
@@ -582,6 +582,7 @@ extern void qos_list_build(char *qos, bitstr_t **qos_bits)
 	char *tmp_qos, *one_qos_name, *name_ptr = NULL;
 	slurmdb_qos_rec_t qos_rec, *qos_ptr = NULL;
 	bitstr_t *tmp_qos_bitstr;
+	int rc;
 
 	if (!qos) {
 		FREE_NULL_BITMAP(*qos_bits);
@@ -595,13 +596,14 @@ extern void qos_list_build(char *qos, bitstr_t **qos_bits)
 	while (one_qos_name) {
 		memset(&qos_rec, 0, sizeof(slurmdb_qos_rec_t));
 		qos_rec.name = one_qos_name;
-		if (assoc_mgr_fill_in_qos(acct_db_conn, &qos_rec,
-					  accounting_enforce,
-					  &qos_ptr) == SLURM_SUCCESS) {
-			bit_set(tmp_qos_bitstr, qos_rec.id);
-		} else {
-			error("Ignoring invalid Allow/DenyQOS value %s",
+		rc = assoc_mgr_fill_in_qos(acct_db_conn, &qos_rec,
+					   accounting_enforce,
+					   &qos_ptr);
+		if ((rc != SLURM_SUCCESS) || (qos_rec.id >= g_qos_count)) {
+			error("Ignoring invalid Allow/DenyQOS value: %s",
 			      one_qos_name);
+		} else {
+			bit_set(tmp_qos_bitstr, qos_rec.id);
 		}
 		one_qos_name = strtok_r(NULL, ",", &name_ptr);
 	}
-- 
GitLab