char **_argv = calloc(argc + 1, sizeof(char *));
char **_envp;
char *preload = "LD_PRELOAD=/lib/libpreload-trace.so";
- int envc = 1;
+ int envc = 0;
int ret;
memcpy(_argv, argv, argc * sizeof(char *));
while (envp[envc++])
;
- _envp = calloc(envc, sizeof(char *));
- memcpy(&_envp[1], _envp, envc * sizeof(char *));
- *envp = preload;
+ _envp = calloc(envc + 1, sizeof(char *));
+ memcpy(&_envp[1], envp, envc * sizeof(char *));
+ *_envp = preload;
- ret = execve(_argv[0], _argv, envp);
+ ret = execve(_argv[0], _argv, _envp);
ERROR("failed to exec %s: %s\n", _argv[0], strerror(errno));
free(_argv);