#include #include #include #include #include #include #include int main (int argc, const char ** argv, const char ** envp) { int newfd = dup(1), outfd = dup(1); char fd_argv[4]; snprintf(fd_argv, 4, "%d", newfd); char * const new_argv[] = { "./exec_victim", fd_argv, NULL }; setenv("IN_EXECVE", "1", 1); int pid = vfork(); if (pid == 0) { close(outfd); execv(new_argv[0], new_argv); } wait(NULL); FILE * out = fdopen(outfd, "a"); if (!out) { printf("cannot open file descriptor\n"); return -1; } fprintf(out, "Goodbye world!\n"); return 0; }