diff --git a/src/api/step_launch.c b/src/api/step_launch.c
index 1903d929bf42090e20e0535e14da63e8aea12726..6e83a639a61a478ce48234dc3cff1667dc3bd929 100644
--- a/src/api/step_launch.c
+++ b/src/api/step_launch.c
@@ -243,6 +243,7 @@ extern int slurm_step_launch(slurm_step_ctx_t *ctx,
 	if (params->pack_jobid && (params->pack_jobid != NO_VAL))
 		_rebuild_mpi_layout(ctx, params);
 
+	mpi_env = xmalloc(sizeof(char *));  /* Needed for setenvf used by MPI */
 	if ((ctx->launch_state->mpi_state =
 	     mpi_hook_client_prelaunch(ctx->launch_state->mpi_info, &mpi_env))
 	    == NULL) {
diff --git a/src/common/env.c b/src/common/env.c
index 0bd293e16f86df6cdf87fa85bf23679d5e853b83..bb8620e02794ad9d8eec3baf74d3690ed5209122 100644
--- a/src/common/env.c
+++ b/src/common/env.c
@@ -282,7 +282,7 @@ int setenvf(char ***envp, const char *name, const char *fmt, ...)
 		return ENOMEM;
 	}
 
-	if (envp) {
+	if (envp && *envp) {
 		if (env_array_overwrite(envp, name, value) == 1)
 			rc = 0;
 		else