freebsd-dev/lib/libc/stdio
John Baldwin cc3d85727d When reopening a stream backed by an open file descriptor, do not close
the existing file descriptor.  Instead, let dup2() atomically close the
old file descriptor when assigning the newly opened file to the same
descriptor.  This closes a race in a multithreaded application where a
concurrent open() could allocate the existing file descriptor in between
the calls to close() and dup2().

PR:		threads/79887
Submitted by:	Dmitrij Tejblum  tejblum of yandex-team.ru
Reviewed by:	davidxu
MFC after:	1 week
2010-12-09 20:28:30 +00:00
..
_flock_stub.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
asprintf.c Rewrite asprintf() as a wrapper around vasprintf(), thus reducing the 2009-03-02 04:11:42 +00:00
clrerr.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
dprintf.c Add dprintf() and vdprintf() from POSIX.1-2008. Like getline(), 2009-03-04 03:38:51 +00:00
fclose.3
fclose.c
fcloseall.c
fdopen.c Remove useless call to getdtablesize(2) in fdopen(3) and its useless 2008-05-10 18:39:20 +00:00
feof.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
ferror.3 Better wording for clearing EOF indicator. 2009-01-28 14:38:41 +00:00
ferror.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
fflush.3
fflush.c
fgetc.c
fgetln.3 - Add getdelim(), getline(), stpncpy(), strnlen(), wcsnlen(), 2009-02-28 06:00:58 +00:00
fgetln.c
fgetpos.c
fgets.3 mdoc: move CAVEATS, BUGS and SECURITY CONSIDERATIONS sections to the 2010-05-13 12:07:55 +00:00
fgets.c
fgetwc.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
fgetwln.3
fgetwln.c
fgetws.3
fgetws.c Eliminate more dead stores. 2009-11-25 04:45:45 +00:00
fileno.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
findfp.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
flags.c
floatio.h
flockfile.3
fopen.3 mdoc: fix parenthesis 2010-05-11 23:08:31 +00:00
fopen.c Fix a leak in the recent fixes for file descriptors > SHRT_MAX. In the 2008-04-22 17:03:32 +00:00
fprintf.c
fpurge.c
fputc.c
fputs.3 Grammer correction from: emaste 2007-04-19 14:01:04 +00:00
fputs.c
fputwc.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
fputws.3
fputws.c Introduce a local variable and use it instead of passed in parameter 2009-01-15 18:53:52 +00:00
fread.3
fread.c Give a less silly response to a silly request. 2010-01-10 14:30:30 +00:00
freopen.c When reopening a stream backed by an open file descriptor, do not close 2010-12-09 20:28:30 +00:00
fscanf.c
fseek.3 Add rewind() to the list of functions which may fail and set errno 2007-06-18 02:13:04 +00:00
fseek.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
fsetpos.c
ftell.c
funopen.3
funopen.c Fix many "function declaration isn't a prototype" warnings in libc. 2009-12-05 19:31:38 +00:00
fvwrite.c Eliminate dead store. 2009-11-25 04:21:42 +00:00
fvwrite.h
fwalk.c
fwide.3
fwide.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
fwprintf.c
fwrite.c Give a less silly response to a silly request. 2010-01-10 14:30:30 +00:00
fwscanf.c
getc.3 Remove unnecessary quoting and markup, add missing punctuation. 2010-01-08 22:02:42 +00:00
getc.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
getchar.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
getdelim.c Better glibc compatibility for getline/getdelim: 2009-10-04 19:43:36 +00:00
getline.3 Update the documentation to reflect changes to the implementation in 2010-11-30 21:26:21 +00:00
getline.c - Add getdelim(), getline(), stpncpy(), strnlen(), wcsnlen(), 2009-02-28 06:00:58 +00:00
gets.c
getw.c
getwc.3
getwc.c
getwchar.c
glue.h
local.h - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
makebuf.c
Makefile.inc Add dprintf() and vdprintf() from POSIX.1-2008. Like getline(), 2009-03-04 03:38:51 +00:00
mktemp.3
mktemp.c In _gettemp(), check that the length of the path doesn't exceed 2010-02-28 13:31:29 +00:00
perror.c
printf-pos.c Remove two unused variables, left over from the refactoring in r180104. 2010-12-02 13:40:21 +00:00
printf.3 Revert changes of 'assure' to 'ensure' made in r211936. 2010-09-11 10:49:56 +00:00
printf.c
printfcommon.h Add support for multibyte thousands_sep encodings, e.g., U+066C. 2009-01-22 08:14:28 +00:00
printflocal.h The argument corresponding to %zn is supposed to be an ssize_t *, not 2009-03-02 04:07:58 +00:00
putc.3
putc.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
putchar.c Expose FILE's internals to the world again in all their glory. Restore 2008-05-05 16:03:52 +00:00
puts.c
putw.c
putwc.3
putwc.c
putwchar.c
refill.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
remove.3
remove.c
rewind.c
rget.c
scanf.3
scanf.c
setbuf.3
setbuf.c
setbuffer.c
setvbuf.c
snprintf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
sprintf.c Use vsprintf instead of rolling our own. 2009-12-21 19:59:38 +00:00
sscanf.c Use vsscanf instead of rolling our own. 2009-12-21 19:56:03 +00:00
stdio.3 Add dprintf() and vdprintf() from POSIX.1-2008. Like getline(), 2009-03-04 03:38:51 +00:00
stdio.c Retire the __fgetcookie(), __fgetpendout(), and __fsetfileno() accessors 2008-05-05 16:14:02 +00:00
swprintf.c
swscanf.c
Symbol.map Add dprintf() and vdprintf() from POSIX.1-2008. Like getline(), 2009-03-04 03:38:51 +00:00
tempnam.c
tmpfile.c
tmpnam.3 mdoc: move CAVEATS, BUGS and SECURITY CONSIDERATIONS sections to the 2010-05-13 12:07:55 +00:00
tmpnam.c
ungetc.3
ungetc.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
ungetwc.3
ungetwc.c Next stage of stdio cleanup: Retire __sFILEX and merge the fields back into 2008-04-17 22:17:54 +00:00
vasprintf.c I feel this wording of the history is more clear. 2010-04-05 22:09:29 +00:00
vdprintf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
vfprintf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
vfscanf.c - Add support for multibyte decimal_point encodings, e.g., U+066B. 2009-01-19 06:19:51 +00:00
vfwprintf.c In __mbsconv(), if prec was zero, nconv could have been used 2009-11-25 04:27:55 +00:00
vfwscanf.c - Add support for multibyte decimal_point encodings, e.g., U+066B. 2009-01-19 06:19:51 +00:00
vprintf.c
vscanf.c
vsnprintf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
vsprintf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
vsscanf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
vswprintf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
vswscanf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00
vwprintf.c
vwscanf.c
wbuf.c
wprintf.3 mdoc: move CAVEATS, BUGS and SECURITY CONSIDERATIONS sections to the 2010-05-13 12:07:55 +00:00
wprintf.c
wscanf.3
wscanf.c
wsetup.c Set the error indicator on an attempt to write to a read-only stream. 2009-01-08 06:38:06 +00:00
xprintf_errno.c
xprintf_float.c
xprintf_hexdump.c
xprintf_int.c
xprintf_quote.c
xprintf_str.c
xprintf_time.c Make all three if conditions look similar by always initializing nsec 2009-11-25 04:35:54 +00:00
xprintf_vis.c
xprintf.c - Use an initializer macro to initialize fields in 'fake' FILE objects used 2010-03-11 17:03:32 +00:00