From aa947d8096b55d05ae408c306c731ddcd47028bd Mon Sep 17 00:00:00 2001
From: Alejandro Sanchez <alex@schedmd.com>
Date: Tue, 21 Aug 2018 15:04:58 +0200
Subject: [PATCH] Fix srun segfault caused by invalid memory reads on the env.

Bug 5561.
---
 src/srun/libsrun/srun_job.c | 2 ++
 src/srun/srun.c             | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/srun/libsrun/srun_job.c b/src/srun/libsrun/srun_job.c
index 8cfb168c21f..2fce59d0817 100644
--- a/src/srun/libsrun/srun_job.c
+++ b/src/srun/libsrun/srun_job.c
@@ -1300,6 +1300,8 @@ extern void pre_launch_srun_job(srun_job_t *job, bool slurm_started,
 		slurm_step_launch_abort(job->step_ctx);
 		exit(error_exit);
 	}
+
+	env_array_merge(&job->env, (const char **)__environ);
 }
 
 extern void fini_srun(srun_job_t *job, bool got_alloc, uint32_t *global_rc,
diff --git a/src/srun/srun.c b/src/srun/srun.c
index 2ca98971079..fd7181774cd 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -597,7 +597,7 @@ static void _setup_one_job_env(slurm_opt_t *opt_local, srun_job_t *job,
 	}
 
 	setup_env(env, srun_opt->preserve_env);
-	job->env = environ;
+	env_array_merge(&job->env, (const char **)environ);
 	xfree(env->task_count);
 	xfree(env);
 }
-- 
GitLab