pid_t child; /* fork() baby */
struct sigaction oldact[SIGNALS_IDX_COUNT]; /* original sigactions indexed by SIG*_IDX */
- sigset_t oldsig; /* original signal mask */
#ifdef USE_PTY
struct termios stdin_attrs; /* stdin and slave terminal runtime attributes */
int pty_sigfd; /* signalfd() */
int poll_timeout;
struct winsize win; /* terminal window size */
+ sigset_t oldsig; /* original signal mask */
#endif
unsigned int runuser :1, /* flase=su, true=runuser */
runuser_uopt :1, /* runuser -u specified */
* TODO: script(1) initializes this FD before fork, good or bad idea?
*/
sigfillset(&ourset);
- if (sigprocmask(SIG_BLOCK, &ourset, &su->oldsig)) {
+ if (sigprocmask(SIG_BLOCK, &ourset, NULL)) {
warn(_("cannot block signals"));
caught_signal = true;
return;
DBG(SIG, ul_debug("initialize signals"));
sigfillset(&ourset);
- if (sigprocmask(SIG_BLOCK, &ourset, &su->oldsig)) {
+ if (sigprocmask(SIG_BLOCK, &ourset, NULL)) {
warn(_("cannot block signals"));
caught_signal = true;
}
DBG(MISC, ul_debug("forking..."));
#ifdef USE_PTY
+ /* no-op, just save original signal mask to oldsig */
+ sigprocmask(SIG_BLOCK, NULL, &su->oldsig);
+
if (su->pty)
pty_create(su);
#endif