[Nagiosplug-devel] [Nagiosplug-help] SSH Plugins
Thomas Guyot-Sionnest
dermoth at aei.ca
Wed Jun 23 17:29:00 CEST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 10-06-18 03:55 AM, Andreas Ericsson wrote:
> On 06/18/2010 09:47 AM, Ton Voon wrote:
>>
>>
>> I set to C, to ensure that the output is not localised from the other
>> end. But that wouldn't work in different locales if you wanted to
>> capture 3rd party error messages in other languages. So it probably
>> should be a plugin writer's decision whether to set LC_ALL=C.
>>
>> As to the whole environment, I can't recall why it is wiped. I can see
>> that PATH could have been altered which maybe a security risk, but
>> that seems like a bad excuse, especially if your system requires
>> different PATHs to be set to get to some binaries (*cough*, Solaris).
>>
>
> It was wiped in the old popen() based implementation. I retained that
> behaviour when I wrote the runcmd() wrapper thing, and noone seems to
> have gotten around to reverting that change. I think setting LC_ALL=C
> explicitly and retaining the rest of the environment would be a far
> better solution, although that environment should almost certainly be
> passed in from the caller rather than automangled at the lowest level.
> That way, we can simply use the incredibly portable
>
> int main(int argc, char **argv, char **env);
>
> declaration of 'main'. I have no idea if 'extern char *environ;' is
> around on all systems where we'd like to support plugin execution,
> but the declaration style above works even on VMS and Ultrix, so it's
> safe to assume it will work everywhere.
There might be other issues to be careful about with **env... See:
https://www.securecoding.cert.org/confluence/display/seccode/ENV31-C.+Do+not+rely+on+an+environment+pointer+following+an+operation+that+may+invalidate+it
I would tend to just use **environ where available and fall back to the
current behaviour otherwise... It also seems that we can get portable
setenv and **environ with gnulib. With the appropriate modules ingluded,
I could just use setenv to add LC_ALL and then use **environ which will
have my added variable.
- --
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAkwiKDYACgkQ6dZ+Kt5BchZpjQCcD848o7r2uGF4uBug7PkgUfhe
6FcAoLJ1e9742HJVq/klBGraccilsn5j
=CG7V
-----END PGP SIGNATURE-----
More information about the Devel
mailing list