mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-04-23 07:07:00 -04:00
Fix cmd_run overwriting the environment
Some commands need the environment to function properly. One such example is check_ssh and check_by_ssh when a SOCKS proxy is required. This patch use setenv and extern char **environ to alter and pass the new environment to the child process Those modules have been added to Gnulib for portability.
This commit is contained in:
parent
6b60516061
commit
cf2bcf6c7a
2 changed files with 6 additions and 4 deletions
1
NEWS
1
NEWS
|
|
@ -29,6 +29,7 @@ This file documents the major additions and syntax changes between releases.
|
|||
Fix translations when extra-opts aren't enabled (Jan Wagner - #2832884)
|
||||
Fix parsing of multi-line strings in check_snmp (broken in 1.4.14) and enhance output in such case (#2832451)
|
||||
Fix detection of pst3 64-bit compile flags with Sun CC
|
||||
Fix cmd_run overwriting the environment, which would break some commands that needed it
|
||||
WARNINGS
|
||||
Updated developer documentation to say that performance labels should not have an equals sign or
|
||||
single quote in the label
|
||||
|
|
|
|||
|
|
@ -48,6 +48,9 @@
|
|||
# include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
/* used in _cmd_open to pass the environment to commands */
|
||||
extern char **environ;
|
||||
|
||||
/** macros **/
|
||||
#ifndef WEXITSTATUS
|
||||
# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
|
||||
|
|
@ -122,7 +125,6 @@ cmd_init (void)
|
|||
static int
|
||||
_cmd_open (char *const *argv, int *pfd, int *pfderr)
|
||||
{
|
||||
char *env[2];
|
||||
pid_t pid;
|
||||
#ifdef RLIMIT_CORE
|
||||
struct rlimit limit;
|
||||
|
|
@ -137,8 +139,7 @@ _cmd_open (char *const *argv, int *pfd, int *pfderr)
|
|||
if (!_cmd_pids)
|
||||
CMD_INIT;
|
||||
|
||||
env[0] = strdup ("LC_ALL=C");
|
||||
env[1] = '\0';
|
||||
setenv("LC_ALL", "C", 1);
|
||||
|
||||
if (pipe (pfd) < 0 || pipe (pfderr) < 0 || (pid = fork ()) < 0)
|
||||
return -1; /* errno set by the failing function */
|
||||
|
|
@ -169,7 +170,7 @@ _cmd_open (char *const *argv, int *pfd, int *pfderr)
|
|||
if (_cmd_pids[i] > 0)
|
||||
close (i);
|
||||
|
||||
execve (argv[0], argv, env);
|
||||
execve (argv[0], argv, environ);
|
||||
_exit (STATE_UNKNOWN);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue