Hook execve() and the other exec*() functions.

Prevents programs from removing our environment variables during the
exec.

Also reduces unnecessary calls to update_environment() by calling it
only once before the exec.
This commit is contained in:
Simon Ruderich
2013-06-05 01:40:56 +02:00
parent a9db9083b6
commit 7ea72c40db
7 changed files with 529 additions and 18 deletions

104
tests/example_exec.expected Normal file
View File

@@ -0,0 +1,104 @@
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,|
CHECKING COLORING.
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,3,|
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,3,4,|
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,3,4,5,|
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,3,4,5,6,|
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,3,4,7,|
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,3,8,|
CHECKING TRANSPARENCY.
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
environ[0] = |TEST=42|
environ[2] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
argv[1] = |foo|
argv[2] = |bar|
environ[0] = |TEST=43|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
environ[0] = |TEST=44|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
argv[1] = |foo|
argv[2] = |bar|
environ[0] = |TEST=45|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
environ[0] = |TEST=46|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
argv[1] = |foo|
argv[2] = |bar|
environ[0] = |TEST=47|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
environ[1] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
environ[0] = |TEST=48|
environ[2] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
argv[1] = |foo|
argv[2] = |bar|
environ[0] = |TEST=49|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
environ[0] = |TEST=50|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
argv[1] = |foo|
argv[2] = |bar|
environ[0] = |TEST=51|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
environ[0] = |TEST=52|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
argv[0] = |./example_exec|
argv[1] = |foo|
argv[2] = |bar|
environ[0] = |TEST=53|
environ[1] = |FOO=|
environ[3] = |COLORED_STDERR_FDS=2,|
Done.