Commit Diff


commit - 2ec571a30c0c3b1a17f6b3631c80d573582f59a1
commit + 1d3142da968da7f6f61f1c1708f39ca233eda150
blob - ebdf3609b6a8eb6605791a91894868175b0ecc86
blob + a9338e1a5771762cd0e53fb2f215dccd3378737e
--- st.c
+++ st.c
@@ -793,14 +793,15 @@ ttynew(const char *line, char *cmd, const char *out, c
 		break;
 	case 0:
 		close(iofd);
+		close(m);
 		setsid(); /* create a new process group */
 		dup2(s, 0);
 		dup2(s, 1);
 		dup2(s, 2);
 		if (ioctl(s, TIOCSCTTY, NULL) < 0)
 			die("ioctl TIOCSCTTY failed: %s\n", strerror(errno));
-		close(s);
-		close(m);
+		if (s > 2)
+			close(s);
 #ifdef __OpenBSD__
 		if (pledge("stdio getpw proc exec", NULL) == -1)
 			die("pledge\n");