commit d40d23e29abf05092af051831c400a220c41ffb7
parent aa683cbd8388e9bd3ae2c961a9fce47d519e2d2f
Author: Jan Klemkow <j.klemkow@wemelug.de>
Date:   Tue, 14 Apr 2020 21:33:11 +0200
move signal handling before fork to avoid race with sigchild
Diffstat:
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/scroll.c b/scroll.c
@@ -415,6 +415,11 @@ main(int argc, char *argv[])
 	if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) < 0)
 		die("ioctl:");
 
+	if (signal(SIGCHLD, sigchld) == SIG_ERR)
+		die("signal:");
+	if (signal(SIGWINCH, sigwinch) == SIG_ERR)
+		die("signal:");
+
 	child = forkpty(&mfd, NULL, &dfl, &ws);
 	if (child == -1)
 		die("forkpty:");
@@ -441,11 +446,6 @@ main(int argc, char *argv[])
 		die("pledge:");
 #endif
 
-	if (signal(SIGCHLD, sigchld) == SIG_ERR)
-		die("signal:");
-	if (signal(SIGWINCH, sigwinch) == SIG_ERR)
-		die("signal:");
-
 	struct termios new = dfl;
 	cfmakeraw(&new);
 	new.c_cc[VMIN ] = 1;	/* return read if at least one byte in buffer */