1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/*
* Copyright (c) 2010 Wind River Systems; see
* guts/COPYRIGHT for information.
*
* static int
* wrap_execv(const char *file, char *const *argv) {
* int rc = -1;
*/
/* note: we don't canonicalize this, because we are intentionally
* NOT redirecting execs into the chroot environment. If you try
* to execute /bin/sh, you get the actual /bin/sh, not
* <CHROOT>/bin/sh. This allows use of basic utilities. This
* design will likely be revisited.
*/
if (antimagic == 0) {
char *path_guess = pseudo_exec_path(file, 0);
pseudo_client_op(OP_EXEC, PSA_EXEC, -1, -1, path_guess, 0);
free(path_guess);
}
if (!pseudo_get_value("PSEUDO_RELOADED"))
pseudo_setupenv();
else {
pseudo_setupenv();
pseudo_dropenv();
}
/* if exec() fails, we may end up taking signals unexpectedly...
* not much we can do about that.
*/
sigprocmask(SIG_SETMASK, &pseudo_saved_sigmask, NULL);
rc = real_execv(file, argv);
/* return rc;
* }
*/
|