#include #include #include #include int main(int argc, char *argv[], char *envp[]) { char **new_envp; int i, j, n; for (n = 0; envp[n]; n++) { /* Just counting the environment variables. */ } new_envp = malloc(n * sizeof (*new_envp)); if (!new_envp) { /* Can't allocate the new environment. */ exit(1); } for (i = j = 0; envp[i]; i++) { char const *equals; if ((equals = strchr(envp[i], '=')) && strncmp(equals + 1, "() {", 4) == 0) { /* Attempted function import - don't add it. */ } else { new_envp[j++] = envp[i]; } } execve("/bin/bash.real", argv, new_envp); exit(1); }