]> rtime.felk.cvut.cz Git - sojka/debian/lightdm.git/blob - debian/patches/08_reset-SIGPIPE-before-exec.patch
* debian/patches:
[sojka/debian/lightdm.git] / debian / patches / 08_reset-SIGPIPE-before-exec.patch
1 === modified file 'src/lightdm.c'
2 --- lightdm/src/lightdm.c       2016-07-14 02:25:24 +0000
3 +++ lightdm/src/lightdm.c       2016-10-19 12:24:49 +0000
4 @@ -1225,6 +1225,12 @@
5      };
6      GError *error = NULL;
7  
8 +    /* Disable the SIGPIPE handler - this is a stupid Unix hangover behaviour.
9 +     * We will handle piples / sockets being closed instead of having the whole daemon be killed...
10 +     * http://stackoverflow.com/questions/8369506/why-does-sigpipe-exist
11 +     */
12 +    signal (SIGPIPE, SIG_IGN);
13 +
14      /* When lightdm starts sessions it needs to run itself in a new mode */
15      if (argc >= 2 && strcmp (argv[1], "--session-child") == 0)
16          return session_child_run (argc, argv);
17
18 === modified file 'src/process.c'
19 --- lightdm/src/process.c       2015-10-20 07:50:44 +0000
20 +++ lightdm/src/process.c       2016-10-19 12:24:49 +0000
21 @@ -236,6 +236,9 @@
22          for (i = 0; i < env_length; i++)
23              setenv (env_keys[i], env_values[i], TRUE);
24  
25 +        /* Reset SIGPIPE handler so the child has default behaviour (we disabled it at LightDM start) */
26 +        signal (SIGPIPE, SIG_DFL);
27 +
28          execvp (argv[0], argv);
29          _exit (EXIT_FAILURE);
30      }
31
32 === modified file 'src/session-child.c'
33 --- lightdm/src/session-child.c 2016-03-15 03:07:59 +0000
34 +++ lightdm/src/session-child.c 2016-10-19 12:24:49 +0000
35 @@ -704,6 +704,9 @@
36              }
37          }
38  
39 +        /* Reset SIGPIPE handler so the child has default behaviour (we disabled it at LightDM start) */
40 +        signal (SIGPIPE, SIG_DFL);
41 +
42          /* Run the command */
43          execve (command_argv[0], command_argv, pam_getenvlist (pam_handle));
44          _exit (EXIT_FAILURE);
45