Return to BSD News archive
Xref: sserve comp.bugs.4bsd:2032 comp.os.386bsd.development:2194 comp.unix.bsd:14048
Newsgroups: comp.bugs.4bsd,comp.os.386bsd.development,comp.unix.bsd
Path: sserve!newshost.anu.edu.au!munnari.oz.au!bunyip.cc.uq.oz.au!harbinger.cc.monash.edu.au!msuinfo!agate!library.ucla.edu!europa.eng.gtefsd.com!MathWorks.Com!news.duke.edu!news-feed-1.peachnet.edu!paperboy.wellfleet.com!noc.near.net!atria.com!jtk
From: jtk@atria.com (John T. Kohl)
Subject: bug in libc/rcmd.c (selects only on 32 descriptors!)
Message-ID: <CqGvwM.CEG@atria.com>
Followup-To: comp.bugs.4bsd
Sender: news@atria.com
Nntp-Posting-Host: banana.atria.com
Organization: Atria Software, Inc.
Date: Fri, 27 May 1994 15:19:33 GMT
Lines: 30
If you use the rcmd() library routine, you better not have the first 32
file descriptors in use.
It calls select() with a hardcoded "number of file descriptors" argument
of 32, rather than computing it based on the sockets about which it
cares.
This bug [as evidenced by source code examination or the attached
program] is in the BSD Networking Release 2 sources, as well as binaries
shipped in DEC OSF/1 V2.0 and SunOS 4.1.3.
substitute your own hostname below, of course:
#include <fcntl.h>
#include <unistd.h>
main()
{
register int i;
for (i = 0; ; i++) {
printf("round %d: opening fd %d\n", i, open("/dev/null", O_RDONLY));
system("rsh localhost -n ls -C /tmp");
}
}
--
John Kohl <jtk@atria.com> or <jtkohl@mit.edu>
working for but not representing: Atria Software
---------
What are you pretending not to know?