diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 1999-02-10 18:08:51 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 1999-02-10 18:08:51 +0000 |
commit | f89801f3c39711353554fe29f09f0edc27eba70c (patch) | |
tree | b8e9d6e5b182780736a2c04d6e1f9d2ff919a52a /usr.bin/rsh/rsh.c | |
parent | 9c63624e6f63e253b29cbfdb129f272dc23f45b2 (diff) | |
download | src-f89801f3c39711353554fe29f09f0edc27eba70c.tar.gz src-f89801f3c39711353554fe29f09f0edc27eba70c.zip |
Don't use an arbitrary hardcoded value for nfds in select() calls.
PR: bin/9986
Notes
Notes:
svn path=/head/; revision=43851
Diffstat (limited to 'usr.bin/rsh/rsh.c')
-rw-r--r-- | usr.bin/rsh/rsh.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/usr.bin/rsh/rsh.c b/usr.bin/rsh/rsh.c index 7d8385e27da0..13f3c2163b80 100644 --- a/usr.bin/rsh/rsh.c +++ b/usr.bin/rsh/rsh.c @@ -42,10 +42,10 @@ static const char copyright[] = static char sccsid[] = "From: @(#)rsh.c 8.3 (Berkeley) 4/6/94"; #endif static const char rcsid[] = - "$Id: rsh.c,v 1.15 1998/03/23 07:46:23 charnier Exp $"; + "$Id: rsh.c,v 1.16 1998/10/09 06:47:57 markm Exp $"; #endif /* not lint */ -#include <sys/types.h> +#include <sys/param.h> #include <sys/signal.h> #include <sys/socket.h> #include <sys/ioctl.h> @@ -332,7 +332,7 @@ talk(nflag, omask, pid, rem, timeout) fd_set readfrom, ready, rembits; char *bp, buf[BUFSIZ]; struct timeval tvtimeout; - int srval; + int nfds, srval; if (!nflag && pid == 0) { (void)close(rfd2); @@ -345,7 +345,8 @@ reread: errno = 0; rewrite: FD_ZERO(&rembits); FD_SET(rem, &rembits); - if (select(16, 0, &rembits, 0, 0) < 0) { + nfds = rem + 1; + if (select(nfds, 0, &rembits, 0, 0) < 0) { if (errno != EINTR) err(1, "select"); goto rewrite; @@ -382,12 +383,13 @@ done: FD_ZERO(&readfrom); FD_SET(rfd2, &readfrom); FD_SET(rem, &readfrom); + nfds = MAX(rfd2+1, rem+1); do { ready = readfrom; if (timeout) { - srval = select(16, &ready, 0, 0, &tvtimeout); + srval = select(nfds, &ready, 0, 0, &tvtimeout); } else { - srval = select(16, &ready, 0, 0, 0); + srval = select(nfds, &ready, 0, 0, 0); } if (srval < 0) { |