1234567891011121314151617181920212223242526272829303132333435363738 |
- --- xinit-1.3.4/xinit.c.client-session 2014-03-25 18:20:26.000000000 +0900
- +++ xinit-1.3.4/xinit.c 2014-11-22 20:11:16.301390109 +0900
- @@ -89,6 +89,7 @@ char xserverrcbuf[256];
-
- #define TRUE 1
- #define FALSE 0
- +#define ERR_EXIT 1
-
- static char *default_server = "X";
- static char *default_display = ":0"; /* choose most efficient */
- @@ -560,6 +561,7 @@ startClient(char *client_argv[])
- {
- clientpid = fork();
- if (clientpid == 0) {
- + int fd;
- set_environment();
- setWindowPath();
-
- @@ -567,7 +569,18 @@ startClient(char *client_argv[])
- Error("cannot change uid");
- _exit(EXIT_FAILURE);
- }
- - setpgid(0, getpid());
- +
- + fd = open ("/dev/null", O_RDONLY);
- +
- + if (fd < 0) {
- + Error("cannot open /dev/null: %s\n", strerror(errno));
- + _exit(ERR_EXIT);
- + }
- + close (STDIN_FILENO);
- + dup2 (fd, STDIN_FILENO);
- + close (fd);
- + setsid();
- +
- Execute(client_argv);
- Error("Unable to run program \"%s\"", client_argv[0]);
-
|