leave a sane environment behind (even if empty) when exiting

some OS atexit() handlers call getenv()
This commit is contained in:
Nuno Lopes 2013-04-07 02:32:20 -04:00
parent bd96813042
commit 1a71bf646e

View File

@ -112,6 +112,7 @@ static const size_t ps_buffer_size = MAX_PATH;
#elif defined(PS_USE_CLOBBER_ARGV) #elif defined(PS_USE_CLOBBER_ARGV)
static char *ps_buffer; /* will point to argv area */ static char *ps_buffer; /* will point to argv area */
static size_t ps_buffer_size; /* space determined at run time */ static size_t ps_buffer_size; /* space determined at run time */
static char *empty_environ[] = {0}; /* empty environment */
#else #else
#define PS_BUFFER_SIZE 256 #define PS_BUFFER_SIZE 256
static char ps_buffer[PS_BUFFER_SIZE]; static char ps_buffer[PS_BUFFER_SIZE];
@ -415,6 +416,9 @@ void cleanup_ps_args(char **argv)
free(frozen_environ[i]); free(frozen_environ[i]);
free(frozen_environ); free(frozen_environ);
free(new_environ); free(new_environ);
/* leave a sane environment behind since some atexit() handlers
call getenv(). */
environ = empty_environ;
} }
#endif /* PS_USE_CLOBBER_ARGV */ #endif /* PS_USE_CLOBBER_ARGV */