diff --git a/NEWS b/NEWS index df6f7fa3c69c1ec11bbc9875f3fe5efc2287ac6b..c1893f818284799b7ba20fc5b7e9841c378a031d 100644 --- a/NEWS +++ b/NEWS @@ -307,6 +307,7 @@ documents those changes that are of interest to users and administrators. -- ALPS - If an allocation requests -n set the BASIL -N option to the amount of tasks / number of node. -- ALPS - Don't set the env var APRUN_DEFAULT_MEMORY, it is not needed anymore. + -- Fix potential buffer overflow. * Changes in Slurm 14.03.9 ========================== diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index a08bfa36df22fd9d245a6d5e8c31fca068787d50..91594d7d055d6e7b76b6c0b3e9dcfa267e6678c4 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -6012,21 +6012,20 @@ static int _write_data_to_file(char *file_name, char *data) */ char **get_job_env(struct job_record *job_ptr, uint32_t * env_size) { - char job_dir[30], *file_name, **environment = NULL; + char *file_name, **environment = NULL; int hash = job_ptr->job_id % 10; int cc; file_name = slurm_get_state_save_location(); - sprintf(job_dir, "/hash.%d/job.%u/environment", hash, job_ptr->job_id); - xstrcat(file_name, job_dir); + xstrfmtcat(file_name, "/hash.%d/job.%u/environment", + hash, job_ptr->job_id); if (_read_data_array_from_file(file_name, &environment, env_size, job_ptr)) { /* Read state from version 14.03 or earlier */ xfree(file_name); file_name = slurm_get_state_save_location(); - sprintf(job_dir, "/job.%u/environment", job_ptr->job_id); - xstrcat(file_name, job_dir); + xstrfmtcat(file_name, "/job.%u/environment", job_ptr->job_id); cc = _read_data_array_from_file(file_name, &environment, env_size,