return argv2;
}
-#define NUM_VSERVER_SUEXEC_ARGS 5
+#define NUM_VSERVER_EXEC_ARGS 5
-int main(int argc, char **argv)
+int main(int argc, char **argv, char **envp)
{
char *slice_name;
char **argv2;
int argc2;
char slice_id_str[256];
unsigned int slice_xid;
- char *envp[] = { NULL, NULL };
- char home_env_str[256];
slice_xid = getuid();
slice_name = get_current_username(slice_xid);
goto out_exception;
}
- argv2 = extend_argv(argc, argv, NUM_VSERVER_SUEXEC_ARGS);
+ argv2 = extend_argv(argc, argv, NUM_VSERVER_EXEC_ARGS);
if (!argv2) goto out_exception;
snprintf(slice_id_str, 255, "%u", slice_xid);
argv2[0] = strdup(VSERVER_PATH);
argv2[1] = strdup(slice_name);
- argv2[2] = strdup("suexec");
- argv2[3] = strdup(slice_id_str);
- argv2[4] = strdup("/bin/bash");
- argv2[5] = strdup("-login");
-
- snprintf(home_env_str, 255, "HOME=/home/%s", slice_name);
- envp[0] = home_env_str;
+ argv2[2] = strdup("exec");
+ argv2[3] = strdup("/bin/su");
+ argv2[4] = strdup("-");
+ argv2[5] = strdup(slice_name);
if (setuid(geteuid())) goto out_exception;