diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 98dc334d3b4ebc4ae7a820bd3aefcf91e8134d36..8dfa1608a156256e0ca2ac0660cf4ffc56dd90d3 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -9855,7 +9855,7 @@ static int _update_job(struct job_record *job_ptr, job_desc_msg_t * job_specs,
 		if ((job_specs->req_nodes[0] == '\0') ||
 		    node_name2bitmap(job_specs->req_nodes,false, &req_bitmap) ||
 		    !bit_super_set(req_bitmap, job_ptr->node_bitmap) ||
-		    job_ptr->details->expanding_jobid) {
+		    (job_ptr->details && job_ptr->details->expanding_jobid)) {
 			info("sched: Invalid node list (%s) for job %u update",
 			     job_specs->req_nodes, job_ptr->job_id);
 			error_code = ESLURM_INVALID_NODE_NAME;
@@ -10387,7 +10387,7 @@ static int _update_job(struct job_record *job_ptr, job_desc_msg_t * job_specs,
 
 	/* This also needs to be updated to make sure we are kosher
 	   after messing with the cpus and nodes. */
-	if (detail_ptr->pn_min_cpus) {
+	if (detail_ptr && detail_ptr->pn_min_cpus) {
 		uint16_t pn_min_cpus =
 			(uint16_t)(job_ptr->tres_req_cnt[TRES_ARRAY_CPU] /
 				   job_ptr->tres_req_cnt[TRES_ARRAY_NODE]);
@@ -10401,7 +10401,7 @@ static int _update_job(struct job_record *job_ptr, job_desc_msg_t * job_specs,
 	}
 
 	/* This has to be figured out before num_tasks is */
-	if (detail_ptr->cpus_per_task) {
+	if (detail_ptr && detail_ptr->cpus_per_task) {
 		uint16_t cpus_per_task;
 		/* Use the new value if given else use the current tasks */
 		uint32_t num_tasks = (job_specs->num_tasks != NO_VAL) ?