Fix race condition in job dependency logic

If job involved in dependency completes and is purged the logic
used to test for circular dependencies can use the invalid pointer
and generate an invalid memory reference before the pointer is
cleared from the dependency list data structure.
diff --git a/NEWS b/NEWS
index 058b739..3671b13 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,8 @@
     a reconfiguration, the node's bitmap was not cleared resulting in an
     underflow upon job termination or removal from scheduling matrix by the
     backfill scheduler.
+ -- Fix race condition in job dependency logic which can result in invalid
+    memory reference.
 
 * Changes in SLURM 2.3.5
 ========================
diff --git a/src/slurmctld/job_scheduler.c b/src/slurmctld/job_scheduler.c
index 481c451..f485891 100644
--- a/src/slurmctld/job_scheduler.c
+++ b/src/slurmctld/job_scheduler.c
@@ -1225,6 +1225,9 @@
 			continue;
 		if (dep_ptr->job_id == job_id)
 			rc = true;
+		else if ((dep_ptr->job_id != dep_ptr->job_ptr->job_id) ||
+			 (dep_ptr->job_ptr->magic != JOB_MAGIC))
+			continue;	/* purged job, ptr not yet cleared */
 		else if (dep_ptr->job_ptr->details &&
 			 dep_ptr->job_ptr->details->depend_list) {
 			rc = _scan_depend(dep_ptr->job_ptr->details->