From 41c4e6a5b56c521de67164fc482e03660f329f5c Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Wed, 11 Jun 2008 16:57:45 +0000 Subject: [PATCH] revert changes from r14228 and 14229 --- src/common/env.c | 97 ++++++++++++++++++++++-------------------------- 1 file changed, 45 insertions(+), 52 deletions(-) diff --git a/src/common/env.c b/src/common/env.c index 2f0e4e52004..bd6d0aee603 100644 --- a/src/common/env.c +++ b/src/common/env.c @@ -78,7 +78,7 @@ strong_alias(env_array_append_fmt, slurm_env_array_append_fmt); strong_alias(env_array_overwrite, slurm_env_array_overwrite); strong_alias(env_array_overwrite_fmt, slurm_env_array_overwrite_fmt); -#define ENV_BUFSIZE (256 * 1024) +#define ENV_BUFSIZE (64 * 1024) /* * Return pointer to `name' entry in environment if found, or @@ -168,16 +168,15 @@ int setenvfs(const char *fmt, ...) { va_list ap; - char *buf, *bufcpy; + char buf[ENV_BUFSIZE]; + char *bufcpy; int rc; - buf = xmalloc(ENV_BUFSIZE); va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); bufcpy = xstrdup(buf); - buf = xmalloc(ENV_BUFSIZE); rc = putenv(bufcpy); return rc; } @@ -185,18 +184,17 @@ setenvfs(const char *fmt, ...) int setenvf(char ***envp, const char *name, const char *fmt, ...) { + char buf[ENV_BUFSIZE]; char **ep = NULL; char *str = NULL; va_list ap; int rc; - char *buf, *bufcpy; + char *bufcpy; - buf = xmalloc(ENV_BUFSIZE); va_start(ap, fmt); vsnprintf (buf, sizeof(buf), fmt, ap); va_end(ap); bufcpy = xstrdup(buf); - xfree(buf); xstrfmtcat (str, "%s=%s", name, bufcpy); xfree(bufcpy); @@ -980,28 +978,30 @@ char **env_array_create(void) int env_array_append_fmt(char ***array_ptr, const char *name, const char *value_fmt, ...) { - char *buf; + char buf[ENV_BUFSIZE]; char **ep = NULL; char *str = NULL; va_list ap; - if (array_ptr == NULL) + buf[0] = '\0'; + if (array_ptr == NULL) { return 0; + } - if (*array_ptr == NULL) + if (*array_ptr == NULL) { *array_ptr = env_array_create(); + } - ep = _find_name_in_env(*array_ptr, name); - if (*ep != NULL) - return 0; - - buf = xmalloc(ENV_BUFSIZE); va_start(ap, value_fmt); vsnprintf (buf, sizeof(buf), value_fmt, ap); va_end(ap); + + ep = _find_name_in_env(*array_ptr, name); + if (*ep != NULL) { + return 0; + } xstrfmtcat (str, "%s=%s", name, buf); - xfree(buf); ep = _extend_env(array_ptr); *ep = str; @@ -1021,15 +1021,18 @@ int env_array_append(char ***array_ptr, const char *name, char **ep = NULL; char *str = NULL; - if (array_ptr == NULL) + if (array_ptr == NULL) { return 0; + } - if (*array_ptr == NULL) + if (*array_ptr == NULL) { *array_ptr = env_array_create(); + } ep = _find_name_in_env(*array_ptr, name); - if (*ep != NULL) + if (*ep != NULL) { return 0; + } xstrfmtcat (str, "%s=%s", name, value); ep = _extend_env(array_ptr); @@ -1051,24 +1054,25 @@ int env_array_append(char ***array_ptr, const char *name, int env_array_overwrite_fmt(char ***array_ptr, const char *name, const char *value_fmt, ...) { - char *buf; + char buf[ENV_BUFSIZE]; char **ep = NULL; char *str = NULL; va_list ap; - if (array_ptr == NULL) + buf[0] = '\0'; + if (array_ptr == NULL) { return 0; + } - if (*array_ptr == NULL) + if (*array_ptr == NULL) { *array_ptr = env_array_create(); + } - buf = xmalloc(ENV_BUFSIZE); va_start(ap, value_fmt); vsnprintf (buf, sizeof(buf), value_fmt, ap); va_end(ap); xstrfmtcat (str, "%s=%s", name, buf); - xfree(buf); ep = _find_name_in_env(*array_ptr, name); if (*ep != NULL) { xfree (*ep); @@ -1184,17 +1188,16 @@ static int _env_array_entry_splitter(const char *entry, */ static int _env_array_putenv(const char *string) { - int rc = 0; - char name[256], *value; + char name[256]; + char value[ENV_BUFSIZE]; - value = xmalloc(ENV_BUFSIZE); - if ((_env_array_entry_splitter(string, name, sizeof(name), - value, ENV_BUFSIZE)) && - (setenv(name, value, 1) != -1)) - rc = 1; - - xfree(value); - return rc; + if (!_env_array_entry_splitter(string, name, sizeof(name), + value, sizeof(value))) + return 0; + if (setenv(name, value, 1) == -1) + return 0; + + return 1; } /* @@ -1221,18 +1224,17 @@ void env_array_set_environment(char **env_array) void env_array_merge(char ***dest_array, const char **src_array) { char **ptr; - char name[256], *value; + char name[256]; + char value[ENV_BUFSIZE]; if (src_array == NULL) return; - value = xmalloc(ENV_BUFSIZE); for (ptr = (char **)src_array; *ptr != NULL; ptr++) { if (_env_array_entry_splitter(*ptr, name, sizeof(name), value, sizeof(value))) env_array_overwrite(dest_array, name, value); } - xfree(value); } /* @@ -1259,7 +1261,7 @@ static void _strip_cr_nl(char *line) static char **_load_env_cache(const char *username) { char *state_save_loc, fname[MAXPATHLEN]; - char *line, name[256], *value; + char line[ENV_BUFSIZE], name[256], value[ENV_BUFSIZE]; char **env = NULL; FILE *fp; int i; @@ -1280,8 +1282,6 @@ static char **_load_env_cache(const char *username) verbose("Getting cached environment variables at %s", fname); env = env_array_create(); - line = xmalloc(ENV_BUFSIZE); - value = xmalloc(ENV_BUFSIZE); while (1) { if (!fgets(line, sizeof(line), fp)) break; @@ -1291,9 +1291,6 @@ static char **_load_env_cache(const char *username) (!_discard_env(name, value))) env_array_overwrite(&env, name, value); } - xfree(line); - xfree(value); - fclose(fp); return env; } @@ -1316,7 +1313,8 @@ static char **_load_env_cache(const char *username) */ char **env_array_user_default(const char *username, int timeout, int mode) { - char *line = NULL, *last = NULL, name[128], *value, *buffer; + char *line = NULL, *last = NULL, name[128], value[ENV_BUFSIZE]; + char buffer[ENV_BUFSIZE]; char **env = NULL; char *starttoken = "XXXXSLURMSTARTPARSINGHEREXXXX"; char *stoptoken = "XXXXSLURMSTOPPARSINGHEREXXXXX"; @@ -1398,7 +1396,7 @@ char **env_array_user_default(const char *username, int timeout, int mode) timeout = config_timeout; /* != 0 test above */ found = 0; buf_read = 0; - buffer = xmalloc(ENV_BUFSIZE); + bzero(buffer, sizeof(buffer)); while (1) { gettimeofday(&now, NULL); timeleft = timeout * 1000; @@ -1430,7 +1428,7 @@ char **env_array_user_default(const char *username, int timeout, int mode) } break; } - buf_rem = ENV_BUFSIZE - buf_read; + buf_rem = sizeof(buffer) - buf_read; if (buf_rem == 0) { error("buffer overflow loading env vars"); break; @@ -1449,7 +1447,6 @@ char **env_array_user_default(const char *username, int timeout, int mode) close(fildes[0]); if (!found) { error("Failed to load current user environment variables"); - xfree(buffer); return _load_env_cache(username); } @@ -1466,7 +1463,6 @@ char **env_array_user_default(const char *username, int timeout, int mode) } if (!found) { error("Failed to get current user environment variables"); - xfree(buffer); return _load_env_cache(username); } @@ -1475,20 +1471,17 @@ char **env_array_user_default(const char *username, int timeout, int mode) found = 0; env = env_array_create(); line = strtok_r(NULL, "\n", &last); - value = xmalloc(ENV_BUFSIZE); while (!found && line) { if (!strncmp(line, stoptoken, len)) { found = 1; break; } if (_env_array_entry_splitter(line, name, sizeof(name), - value, ENV_BUFSIZE) && + value, sizeof(value)) && (!_discard_env(name, value))) env_array_overwrite(&env, name, value); line = strtok_r(NULL, "\n", &last); } - xfree(value); - xfree(buffer); if (!found) { error("Failed to get all user environment variables"); env_array_free(env); -- GitLab