diff options
author | Roy Marples <roy@marples.name> | 2008-10-03 17:50:10 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-10-03 17:50:10 +0000 |
commit | 09a1a5ecd4561b6120aee56a5db057d46b054b36 (patch) | |
tree | 64e138e538324fdd5aa34cce05bb0044b3cb80f9 /src/rc | |
parent | 84f6bf4bff51cc2ed77054298d6953f5a6e60d1b (diff) |
Fix a segfault when profile.env does not exist.
Diffstat (limited to 'src/rc')
-rw-r--r-- | src/rc/rc-misc.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/rc/rc-misc.c b/src/rc/rc-misc.c index d94cd2e7..d4b3ca08 100644 --- a/src/rc/rc-misc.c +++ b/src/rc/rc-misc.c @@ -128,13 +128,13 @@ void env_filter(void) size_t i = 0; /* Add the user defined list of vars */ - env_allow = rc_stringlist_split(rc_conf_value ("rc_env_allow"), " "); + env_allow = rc_stringlist_split(rc_conf_value("rc_env_allow"), " "); if (exists(PROFILE_ENV)) profile = rc_config_load(PROFILE_ENV); /* Copy the env and work from this so we can manipulate it safely */ env_list = rc_stringlist_new(); - while (environ[i]) { + while (environ && environ[i]) { env = rc_stringlist_add(env_list, environ[i++]); e = strchr(env->value, '='); if (e) @@ -159,14 +159,15 @@ void env_filter(void) } /* Now add anything missing from the profile */ - TAILQ_FOREACH(env, profile, entries) { - e = strchr(env->value, '='); - *e = '\0'; - if (!getenv(env->value)) - setenv(env->value, e + 1, 1); + if (profile) { + TAILQ_FOREACH(env, profile, entries) { + e = strchr(env->value, '='); + *e = '\0'; + if (!getenv(env->value)) + setenv(env->value, e + 1, 1); + } } - rc_stringlist_free(env_list); rc_stringlist_free(env_allow); rc_stringlist_free(profile); |