On Wednesday 27 February 2008 02:02:03 pm John Baldwin wrote: > jhb 2008-02-27 19:02:02 UTC > > FreeBSD src repository > > Modified files: > lib/libc/stdio fdopen.c fopen.c freopen.c > Log: > File descriptors are an int, but our stdio FILE object uses a short to hold > them. Thus, any fd whose value is greater than SHRT_MAX is handled > incorrectly (the short value is sign-extended when converted to an int). > An unpleasant side effect is that if fopen() opens a file and gets a > backing fd that is greater than SHRT_MAX, fclose() will fail and the file > descriptor will be leaked. Better handle this by fixing fopen(), fdopen(), > and freopen() to fail attempts to use a fd greater than SHRT_MAX with > EMFILE. > > At some point in the future we should look at expanding the file descriptor > in FILE to an int, but that is a bit complicated due to ABI issues.
To reproduce, open 32k fd's and then invoke gethostbyname() with 'files' enabled in nsswitch.conf for host lookups. A fd on /etc/hosts will be leaked for each invocation of gethostbyname(). -- John Baldwin _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "[EMAIL PROTECTED]"