calculate width for select() more carefully
authorderaadt <deraadt@openbsd.org>
Wed, 26 Mar 1997 19:41:59 +0000 (19:41 +0000)
committerderaadt <deraadt@openbsd.org>
Wed, 26 Mar 1997 19:41:59 +0000 (19:41 +0000)
usr.bin/rsh/rsh.c

index b708793..4b0cf83 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: rsh.c,v 1.11 1997/01/15 23:43:09 millert Exp $        */
+/*     $OpenBSD: rsh.c,v 1.12 1997/03/26 19:41:59 deraadt Exp $        */
 
 /*-
  * Copyright (c) 1983, 1990 The Regents of the University of California.
@@ -41,7 +41,7 @@ char copyright[] =
 
 #ifndef lint
 /*static char sccsid[] = "from: @(#)rsh.c      5.24 (Berkeley) 7/1/91";*/
-static char rcsid[] = "$OpenBSD: rsh.c,v 1.11 1997/01/15 23:43:09 millert Exp $";
+static char rcsid[] = "$OpenBSD: rsh.c,v 1.12 1997/03/26 19:41:59 deraadt Exp $";
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -328,7 +328,7 @@ reread:             errno = 0;
                bp = buf;
 
 rewrite:       rembits = 1 << rem;
-               if (select(16, 0, &rembits, 0, 0) < 0) {
+               if (select(rem + 1, 0, &rembits, 0, 0) < 0) {
                        if (errno != EINTR) {
                                (void)fprintf(stderr,
                                    "rsh: select: %s.\n", strerror(errno));
@@ -363,7 +363,7 @@ done:
        readfrom = (1 << rfd2) | (1 << rem);
        do {
                ready = readfrom;
-               if (select(16, &ready, 0, 0, 0) < 0) {
+               if (select(MAX(rfd2, rem) + 1, &ready, 0, 0, 0) < 0) {
                        if (errno != EINTR) {
                                (void)fprintf(stderr,
                                    "rsh: select: %s.\n", strerror(errno));