From 2becde33d928ffc7d0c3908e98d07b120fe31ff9 Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Thu, 11 Aug 2011 16:20:13 -0700 Subject: [PATCH] Improve step record layout management This prevents bad node index values in a job step completion record from crashing slurmctld, as is possible if srun has bad configuration information about a job step or other failure. --- src/slurmctld/step_mgr.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c index 876cffc527c..038ececfd12 100644 --- a/src/slurmctld/step_mgr.c +++ b/src/slurmctld/step_mgr.c @@ -2663,13 +2663,6 @@ extern int step_partial_comp(step_complete_msg_t *req, uid_t uid, */ req->range_last = nodes - 1; #endif - if (req->range_last >= nodes) { /* range is zero origin */ - error("step_partial_comp: StepID=%u.%u last=%u " - "nodes=%d", - req->job_id, req->job_step_id, req->range_last, - nodes); - return EINVAL; - } step_ptr->exit_node_bitmap = bit_alloc(nodes); if (step_ptr->exit_node_bitmap == NULL) fatal("bit_alloc: %m"); @@ -2682,15 +2675,16 @@ extern int step_partial_comp(step_complete_msg_t *req, uid_t uid, */ req->range_last = nodes - 1; #endif - if (req->range_last >= nodes) { /* range is zero origin */ - error("step_partial_comp: StepID=%u.%u last=%u " - "nodes=%d", - req->job_id, req->job_step_id, req->range_last, - nodes); - return EINVAL; - } step_ptr->exit_code = MAX(step_ptr->exit_code, req->step_rc); } + if ((req->range_first >= nodes) || (req->range_last >= nodes) || + (req->range_first > req->range_last)) { + /* range is zero origin */ + error("step_partial_comp: StepID=%u.%u range=%u-%u nodes=%d", + req->job_id, req->job_step_id, req->range_first, + req->range_last, nodes); + return EINVAL; + } bit_nset(step_ptr->exit_node_bitmap, req->range_first, req->range_last); -- GitLab