diff --git a/NEWS b/NEWS index def65eae7eab5bd17e7884646d89f0645a1e173b..da25ff463b4d94f4bfde619cee3ce9c0046b54fe 100644 --- a/NEWS +++ b/NEWS @@ -140,6 +140,8 @@ documents those changes that are of interest to users and admins. Didier Gazen, Laboratoire d'Aerologie. -- BLUEGENE - fix for not allowing jobs if all midplanes are drained and all blocks are in an error state. + -- Avoid slurmctld abort due to bad pointer when setting an advanced + reservation MAINT flag if it contains no nodes (only licenses). * Changes in SLURM 2.3.3 ======================== diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c index 008fef19e006297a94e187560882a7e35e484f6b..0ce8579bd275b9a53af8455e0ac9da7f3f329aaf 100644 --- a/src/slurmctld/reservation.c +++ b/src/slurmctld/reservation.c @@ -3356,11 +3356,17 @@ static void _set_nodes_maint(slurmctld_resv_t *resv_ptr, time_t now) struct node_record *node_ptr; if (!resv_ptr->node_bitmap) { - error("reservation %s lacks a bitmap", resv_ptr->name); + error("maintenance reservation %s lacks a bitmap", + resv_ptr->name); return; } i_first = bit_ffs(resv_ptr->node_bitmap); + if (i_first < 0) { + error("maintenance reservation %s includes no nodes", + resv_ptr->name); + return; + } i_last = bit_fls(resv_ptr->node_bitmap); for (i=i_first; i<=i_last; i++) { if (!bit_test(resv_ptr->node_bitmap, i))