freebsd-dev/lib/libc/stdio
Konstantin Belousov fda0a14f47 Make stdio deferred cancel-safe.
If used with fopen(3)/fdopen(3)-ed FILEs, stdio accurately uses
non-cancellable internal versions of the functions, i.e. it seems to
be fine with regard to cancellation.  But if the funopen(3) and
f{r,w}open(3) functions were used to open the FILE, and corresponding
user functions create cancellation points (they typically have no
other choice), then stdio code at least leaks FILE' lock.

The change installs cleanup handler which unlocks FILE.  Some minimal
restructuring of the code was required to make it use common return
place to satisfy hand-rolled pthread_cleanup_pop() requirements.

Noted by:	eugen
Reviewed by:	eugen, vangyzen
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
Differential revision:	https://reviews.freebsd.org/D11246
2017-06-29 14:44:17 +00:00
..
_flock_stub.c Remove names from some prototypes 2015-09-20 20:26:46 +00:00
asprintf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
clrerr.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
dprintf.c Remove usage of _WITH_DPRINTF 2016-07-30 01:16:06 +00:00
fclose.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fclose.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fcloseall.c
fdopen.c Add _flags2 per jhb@ suggestion since no room left in _flags. 2015-10-28 14:40:02 +00:00
feof.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
ferror.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
ferror.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
fflush.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fflush.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fgetc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fgetln.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fgetln.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fgetpos.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
fgets.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fgets.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fgetwc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fgetwln.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fgetwln.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fgetws.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fgetws.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fileno.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
findfp.c Use __alignof__ instead of assuming int64_t to get the right 2015-12-30 03:36:22 +00:00
flags.c Support file verification in MAC. 2015-04-22 01:54:25 +00:00
floatio.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
flockfile.3
fmemopen.c According to POSIX, a write operation shall start at the current size of 2015-10-25 12:09:28 +00:00
fopen.3 fopen(3): make manlint fixes 2017-05-23 07:08:30 +00:00
fopen.c Add _flags2 per jhb@ suggestion since no room left in _flags. 2015-10-28 14:40:02 +00:00
fopencookie.3 fopencookie(3): declare function pointers in SYNOPSIS correctly 2017-05-23 07:15:57 +00:00
fopencookie.c libc: Add fopencookie(3) wrapper around funopen(3) 2016-05-11 14:38:27 +00:00
fprintf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
fpurge.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
fputc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fputs.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fputs.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fputwc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fputws.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fputws.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fread.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fread.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
freopen.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fscanf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fseek.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fseek.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fsetpos.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
ftell.c 1) Remove my overcomplicated error fallback and just return error 2015-11-12 22:24:39 +00:00
funopen.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
funopen.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
fvwrite.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
fvwrite.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
fwalk.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
fwide.3
fwide.c
fwprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
fwrite.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
fwscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
getc.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
getc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
getchar.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
getdelim.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
getline.3 Remove _WITH_GETLINE and _WITH_DPRINTF guards 2016-07-30 01:00:16 +00:00
getline.c Remove last traces of _WITH_GETLINE 2016-07-30 01:13:54 +00:00
gets.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
getw.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
getwc.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
getwc.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
getwchar.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
glue.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
local.h Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
makebuf.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
Makefile.inc libc: Add fopencookie(3) wrapper around funopen(3) 2016-05-11 14:38:27 +00:00
mktemp.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
mktemp.c Add mkostemp() and mkostemps(). 2013-08-09 17:24:23 +00:00
open_memstream.3 Fix bunch of .Xrs. 2016-03-28 16:48:28 +00:00
open_memstream.c Use stdint.h instead of inttypes.h as the latter pollutes namespace more 2015-12-09 09:14:57 +00:00
open_wmemstream.c libc: provide some bounds-checking through reallocarray(3). 2017-03-12 16:03:34 +00:00
perror.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
printf_l.3 Add missing include files for the printf_l and scanf_l man pages. 2013-11-17 02:03:45 +00:00
printf-pos.c libc: provide some bounds-checking through reallocarray(3). 2017-03-12 16:03:34 +00:00
printf.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
printf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
printfcommon.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
printflocal.h Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
putc.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
putc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
putchar.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
puts.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
putw.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
putwc.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
putwc.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
putwchar.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
refill.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
remove.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
remove.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
rewind.c rewind: always clear error indicator. 2014-07-22 16:10:56 +00:00
rget.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
scanf_l.3 Add missing include files for the printf_l and scanf_l man pages. 2013-11-17 02:03:45 +00:00
scanf.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
scanf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
setbuf.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
setbuf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
setbuffer.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
setvbuf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
snprintf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
sprintf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
sscanf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
stdio.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
stdio.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
swprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
swscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
Symbol.map libc: Actually export fopencookie(3) 2016-05-12 21:30:22 +00:00
tempnam.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
tmpfile.c Switch libc from using _sig{procmask,action,suspend} symbols, which 2015-08-29 14:25:01 +00:00
tmpnam.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
tmpnam.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
ungetc.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
ungetc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
ungetwc.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
ungetwc.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
vasprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vdprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vfprintf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
vfscanf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
vfwprintf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
vfwscanf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
vprintf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
vscanf.c Make stdio deferred cancel-safe. 2017-06-29 14:44:17 +00:00
vsnprintf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
vsprintf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
vsscanf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
vswprintf.c If the size passed to {,v}s{w,n}printf is larger than INT_MAX+1 2012-04-21 06:10:18 +00:00
vswscanf.c Renumber clauses to reduce diffs to other versions 2013-04-23 13:33:13 +00:00
vwprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
vwscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
wbuf.c Adjust errno on failed prepwrite. 2014-07-20 21:24:29 +00:00
wprintf.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
wprintf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
wscanf.3 Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
wscanf.c Implement xlocale APIs from Darwin, mainly for use by libc++. This adds a 2011-11-20 14:45:42 +00:00
wsetup.c Convert libc/stdio from K&R to ANSI C 2013-04-23 14:36:44 +00:00
xprintf_errno.c libc: Always use our own copy of sys_errlist and sys_nerr (.so only). 2013-08-31 22:32:42 +00:00
xprintf_float.c libc: clean some set-but-not-used errors. 2015-02-18 03:33:17 +00:00
xprintf_hexdump.c
xprintf_int.c
xprintf_quote.c
xprintf_str.c
xprintf_time.c
xprintf_vis.c
xprintf.c The register_printf_render_std() function expects regular string. 2012-07-04 17:35:07 +00:00