Blob Blame History Raw
# Harden write and chdir because of ignored return value
--- a/tty.c
+++ b/tty.c
@@ -336,7 +336,8 @@
 void
 tty_raw(struct tty *tty, const char *s)
 {
-	write(tty->fd, s, strlen(s));
+	if (write(tty->fd, s, strlen(s)) == -1)
+		fatal("write failed");
 }
 
 void
@@ -369,7 +370,8 @@
 	buffer_write(tty->out, s, strlen(s));
 
 	if (tty->log_fd != -1)
-		write(tty->log_fd, s, strlen(s));
+		if (write(tty->log_fd, s, strlen(s)) == -1)
+			fatal("write failed");
 }
 
 void
@@ -394,7 +396,8 @@
 	}
 
 	if (tty->log_fd != -1)
-		write(tty->log_fd, &ch, 1);
+		if (write(tty->log_fd, &ch, 1) == -1)
+			fatal("write failed");
 }
 
 void
@@ -407,7 +410,8 @@
 			break;
 		buffer_write8(tty->out, gu->data[i]);
 		if (tty->log_fd != -1)
-			write(tty->log_fd, &gu->data[i], 1);
+			if (write(tty->log_fd, &gu->data[i], 1) == -1)
+				fatal("write failed");
 	}
 
 	width = utf8_width(gu->data);
--- a/window.c
+++ b/window.c
@@ -490,7 +490,9 @@
 		return (-1);
 	case 0:
 		if (chdir(wp->cwd) != 0)
-			chdir("/");
+			if (chdir("/") <0 )
+				fatal("chdir failed");
+
 
 		if (tcgetattr(STDIN_FILENO, &tio2) != 0)
 			fatal("tcgetattr failed");