diff --git a/usr.bin/script/script.c b/usr.bin/script/script.c --- a/usr.bin/script/script.c +++ b/usr.bin/script/script.c @@ -327,8 +327,12 @@ if (n > 0 && FD_ISSET(STDIN_FILENO, &rfd)) { cc = read(STDIN_FILENO, ibuf, BUFSIZ); - if (cc < 0) + if (cc < 0) { + (void)close(master); + master = -1; + break; + } if (cc == 0) { if (tcgetattr(master, &stt) == 0 && (stt.c_lflag & ICANON) != 0) { @@ -470,7 +474,8 @@ } } (void)fclose(fscript); - (void)close(master); + if (master >= 0) + (void)close(master); exit(eno); }