diff options
author | Tilghman Lesher <tilghman@meg.abyt.es> | 2010-05-28 22:50:06 +0000 |
---|---|---|
committer | Tilghman Lesher <tilghman@meg.abyt.es> | 2010-05-28 22:50:06 +0000 |
commit | 2da88f1977295c7945a2cd3a5c6a79246439ccd0 (patch) | |
tree | e02a13ebfaee0233cb41293d7da871d1af74e5d5 | |
parent | 7e204048fc143235751a6546187d7ca25792a1f0 (diff) |
Setup environment variables for the benefit of child processes and disallow changing them.
(closes issue #14899)
Reported by: jmls
Patches:
20090916__issue14899.diff.txt uploaded by tilghman (license 14)
Tested by: jmls
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@266385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | UPGRADE.txt | 3 | ||||
-rw-r--r-- | funcs/func_env.c | 3 | ||||
-rw-r--r-- | main/asterisk.c | 13 |
3 files changed, 18 insertions, 1 deletions
diff --git a/UPGRADE.txt b/UPGRADE.txt index 67fa6a628..f603caab4 100644 --- a/UPGRADE.txt +++ b/UPGRADE.txt @@ -82,6 +82,9 @@ From 1.6.2 to 1.8: of a Mailbox or Password, will, if it exists, jump to the 'a' extension in the current dialplan context. +* Environment variables that start with "AST_" are reserved to the system and + may no longer be set from the dialplan. + From 1.6.1 to 1.6.2: * SIP no longer sends the 183 progress message for early media by diff --git a/funcs/func_env.c b/funcs/func_env.c index 70a87776b..b770bbc9b 100644 --- a/funcs/func_env.c +++ b/funcs/func_env.c @@ -44,6 +44,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") </parameter> </syntax> <description> + Variables starting with <literal>AST_</literal> are reserved to the system and may not be set. </description> </function> <function name="STAT" language="en_US"> @@ -106,7 +107,7 @@ static int env_read(struct ast_channel *chan, const char *cmd, char *data, static int env_write(struct ast_channel *chan, const char *cmd, char *data, const char *value) { - if (!ast_strlen_zero(data)) { + if (!ast_strlen_zero(data) && strncmp(data, "AST_", 4)) { if (!ast_strlen_zero(value)) { setenv(data, value, 1); } else { diff --git a/main/asterisk.c b/main/asterisk.c index 9ae67a9d8..d11fc8dce 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -3128,6 +3128,18 @@ static void run_startup_commands(void) ast_config_destroy(cfg); } +static void env_init(void) +{ + setenv("AST_SYSTEMNAME", ast_config_AST_SYSTEM_NAME, 1); + setenv("AST_BUILD_HOST", ast_build_hostname, 1); + setenv("AST_BUILD_DATE", ast_build_date, 1); + setenv("AST_BUILD_KERNEL", ast_build_kernel, 1); + setenv("AST_BUILD_MACHINE", ast_build_machine, 1); + setenv("AST_BUILD_OS", ast_build_os, 1); + setenv("AST_BUILD_USER", ast_build_user, 1); + setenv("AST_VERSION", ast_get_version(), 1); +} + int main(int argc, char *argv[]) { int c; @@ -3314,6 +3326,7 @@ int main(int argc, char *argv[]) } ast_readconfig(); + env_init(); if (ast_opt_remote && remotesock != NULL) ast_copy_string((char *) cfg_paths.socket_path, remotesock, sizeof(cfg_paths.socket_path)); |