Corinna Vinschen
941df759a2
Fix a potential buffer overflow in wscanf family
...
Fixes Coverity CID 60046
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-10-22 21:43:28 +02:00
Corinna Vinschen
88208d3735
POSIX-1.2008 per-thread locales, groundwork part 2
...
Move all locale category structure definitions into setlocale.h and remove
other headers in locale subdir. Create inline accessor functions for
current category struct pointers and use throughout. Use pointers to
"C" locale category structs by default in __global_locale.
Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:56 +02:00
Shoichi Sakon
001ef5af39
Fix wscanf family positional parameter handling in %lc, %ls, %l[]
...
* libc/stdio/vfwscanf.c (__SVFWSCANF_R): Convert wrong usage of va_arg
to GET_ARG in %lc, %ls nad %l[] cases. Fix unterminated string in %l[]
case.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2015-08-03 21:51:35 +02:00
Corinna Vinschen
281924766d
* libc/stdio/vfwscanf.c (__SVFWSCANF_R): Fix fetching decimal_point in
...
!_MB_CAPABLE as well as in !__HAVE_LOCALE_INFO_EXTENDED__ case.
2013-12-19 18:50:00 +00:00
Corinna Vinschen
576b7804d6
* vfscanf.c (BUF): Change definition to take multibyte decimal point
...
into account.
(__SVFSCANF_R): Handle radix char language-dependent
per POSIX.
(__SVFWSCANF_R): Ditto.
2013-12-18 19:23:33 +00:00
Joel Sherrill
380c9f6165
2013-11-26 Julio Gutierrez <jgutleyva@gmail.com>
...
*libc/include/wchar.h: Add restrict keyword.
*libc/stdio/fgetws.c (fgetws): ditto.
*libc/stdio/fputws.c (fputws): ditto.
*libc/stdio/fwprintf.c (fwprintf): ditto.
*libc/stdio/fwscanf.c (fwscanf): ditto.
*libc/stdio/swprintf.c (swprintf): ditto.
*libc/stdio/swscanf.c (swscanf): ditto.
*libc/stdio/vfwprintf.c (vfwprintf): ditto.
*libc/stdio/vfwscanf.c (vfwscanf): ditto.
*libc/stdio/vswprintf.c (vswprintf): ditto.
*libc/stdio/vswscanf.c (vswscanf): ditto.
*libc/stdio/vwprintf.c (vwprintf): ditto.
*libc/stdio/vwscanf.c (vwscanf): ditto.
*libc/stdio/wprintf.c (wprintf): ditto.
*libc/stdio/wscanf.c (wscanf): ditto.
*libc/stdlib/mbrlen.c (mbrlen): ditto.
*libc/stdlib/mbrtowc.c (mbrtowc): ditto.
*libc/stdlib/mbsnrtowcs.c (mbsnrtowcs): ditto.
*libc/stdlib/mbsrtowcs.c (mbsrtowcs): ditto.
*libc/stdlib/wcrtomb.c (wcrtomb): ditto.
*libc/stdlib/wcsnrtombs.c (wcsnrtombs): ditto.
*libc/stdlib/wcsrtombs.c (wcsrtombs): ditto.
*libc/stdlib/wcstod.c (wcstod): ditto.
*libc/stdlib/wcstol.c (wcstol): ditto.
*libc/stdlib/wcstold.c (wcstold): ditto.
*libc/stdlib/wcstoll.c (wcstoll): ditto.
*libc/stdlib/wcstoul.c (wcstoul): ditto.
*libc/stdlib/wcstoull.c (cstoull): ditto.
*libc/string/wcpcpy.c (wcpcpy): ditto.
*libc/string/wcpncpy.c (wcpncpy): ditto.
*libc/string/wcscat.c (wcscat): ditto.
*libc/string/wcscpy.c (wcscpy): ditto.
*libc/string/wcsncat.c (wcsncat): ditto.
*libc/string/wcsncpy.c (wcsncpy): ditto.
*libc/string/wcsstr.c (wcsstr): ditto.
*libc/string/wcstok.c (wcstok): ditto.
*libc/string/wcsxfrm.c (wcsxfrm): ditto.
*libc/string/wmemcpy.c (wmemcpy): ditto.
2013-11-26 17:21:01 +00:00
Jeff Johnston
b334e6660a
2013-04-29 Sebastian Huber <sebastian.huber@embedded-brains.de>
...
* libc/stdio/local.h (CHECK_INIT): Evaluate argument only once.
(CHECK_STD_INIT): Likewise.
* libc/stdio/fgetc.c (fgetc): Use local variable for _REENT.
* libc/stdio/fgetwc.c (fwgetc): Likewise.
* libc/stdio/fgetws.c (fgetws): Likewise.
* libc/stdio/fputc.c (fputc): Likewise.
* libc/stdio/fputwc.c (fputwc): Likewise.
* libc/stdio/fputws.c (fputws): Likewise.
* libc/stdio/getc.c (getc): Likewise.
* libc/stdio/getchar.c (_getchar_r): Likewise.
* libc/stdio/putc.c (putc): Likewise.
* libc/stdio/putchar.c (putchar): Likewise.
* libc/stdio/scanf.c (scanf): Likewise.
* libc/stdio/setvbuf.c (setvbuf): Likewise.
* libc/stdio/ungetwc.c (ungetwc): Likewise.
* libc/stdio/vfscanf.c (VFSCANF): Likewise.
* libc/stdio/vfwscanf.c (VFWSCANF): Likewise.
* libc/stdio/viprintf.c (viprintf): Likewise.
* libc/stdio/viscanf.c (viscanf): Likewise.
* libc/stdio/vprintf.c (vprintf): Likewise.
* libc/stdio/vscanf.c (vscanf): Likewise.
* libc/stdio/vwprintf.c (vwprintf): Likewise.
* libc/stdio/vwscanf.c (vwscanf): Likewise.
* libc/stdio/wscanf.c (wscanf): Likewise.
* libc/stdlib/ecvtbuf.c (fcvtbuf): Likewise.
(fcvtbuf): Likewise.
(ecvtbuf): Likewise.
(ecvtbuf): Likewise.
* libc/stdlib/mblen.c (mblen): Likewise.
* libc/stdlib/mbrlen.c (mbrlen): Likewise.
* libc/stdlib/mbrtowc.c (mbrtowc): Likewise.
* libc/stdlib/mbtowc.c (mbtowc): Likewise.
* libc/stdlib/rand.c (srand): Likewise.
(rand): Likewise.
* libc/stdlib/wcrtomb.c (wcrtomb): Likewise.
* libc/stdlib/wctob.c (wctob): Likewise.
* libc/stdlib/wctomb.c (wctomb): Likewise.
* libc/string/strtok.c (strtok): Likewise.
* libc/time/asctime.c (asctime): Likewise.
* libc/time/gmtime.c (gmtime): Likewise.
* libc/time/lcltime.c (lcltime): Likewise.
2013-04-29 21:06:23 +00:00
Corinna Vinschen
4aa28d8ae2
* libc/stdio/local.h (_newlib_flockfile_start): New macro to
...
secure stream related critical section against thread cancellation.
(_newlib_flockfile_exit): Ditto.
(_newlib_sfp_lock_end): Ditto.
(_newlib_sfp_lock_start): Ditto for the list of streams.
(_newlib_sfp_lock_exit): Ditto.
(_newlib_sfp_lock_end): Ditto.
Use aforementioned macros in place of _flockfile/_funlockfile
and __sfp_lock_acquire/__sfp_lock_release throughout the code.
* libc/stdio/fclose.c: Explicitely disable and re-enable thread
cancellation. Explain why.
* libc/stdio/freopen.c: Ditto.
* libc/stdio64/freopen64.c: Ditto.
2012-05-30 08:58:42 +00:00
Corinna Vinschen
656df313e0
* libc/stdio/fclose.c: Only use sfp lock to guard non-atomic
...
changes of flags and fp lock.
* libc/stdio/freopen.c: Ditto.
* libc/stdio/freopen64.c: Ditto.
* libc/stdio/fgetc.c: Revert change from 2009-04-24, remove sfp locks
which guard entire function to avoid potential deadlocks when using
stdio functions in multiple thraeds.
* libc/stdio/fgets.c: Ditto.
* libc/stdio/fgetwc.c: Ditto.
* libc/stdio/fgetws.c: Ditto.
* libc/stdio/fread.c: Ditto.
* libc/stdio/fseek.c: Ditto.
* libc/stdio/getc.c: Ditto.
* libc/stdio/getdelim.c: Ditto.
* libc/stdio/gets.c: Ditto.
* libc/stdio/vfscanf.c: Ditto.
* libc/stdio/vfwscanf.c: Ditto.
* libc/stdio/fflush.c (_fflush_r): Split out core functionality into
new function __sflush_r. Just lock file and call __sflush_r from here.
* libc/stdio/fwalk.c (_fwalk): Remove static helper function and move
functionality back into main function. Don't walk a file with flags
value of 1. Add comment.
(_fwalk_reent): Ditto.
* libc/stdio/local.h (__sflush_r): Declare.
* libc/stdio/refill.c (__srefill): Before calling fwalk, set flags
value to 1 so this file pointer isn't walked. Revert flags afterwards
and call __sflush_r for this fp if necessary. Add comments.
2011-01-28 10:49:11 +00:00
Corinna Vinschen
d0b85c158f
* libc/include/wchar.h (fwscanf, swscanf, vfwscanf, vswscanf, vwscanf,
...
wscanf): Declare.
(_fwscanf_r, _swscanf_r, _vfwscanf_r, _vswscanf_r, _vwscanf_r,
_wscanf_r): Declare.
* libc/stdio/Makefile.am: Add new wscanf files.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fwscanf.c: New file.
* libc/stdio/local.h (__svfwscanf_r, __ssvfwscanf_r, __svfiwscanf_r,
__ssvfiwscanf_r): Declare.
* libc/stdio/stdio.tex: Add new documentation references.
* libc/stdio/swscanf.c: New file.
* libc/stdio/vfwscanf.c: New file.
* libc/stdio/vswscanf.c: New file.
* libc/stdio/vwscanf.c: New file.
* libc/stdio/wscanf.c: New file.
* libc/stdio/vfscanf.c (_sungetc_r): Make externaly available. Only
define if INTEGER_ONLY is defined. Declare otherwise.
(__ssrefill_r): Ditto.
(_sfread_r): Ditto.
Remove static eofread/eofread1 functions and use __seofread
function instead, throughout.
* libc/stdio/local.h (__seofread): Declare.
* libc/stdio/stdio.c (__seofread): Define.
* libc/stdio/fgetwc.c (__fgetwc): Fix compiler warning.
* libc/stdio/fgetws.c (_fgetws_r): Ditto.
* libc/stdio/fread.c (_fread_r): Ditto.
* libc/stdio/vfprintf.c: Ditto.
* libc/stdio/vswprintf.c: Ditto.
2009-03-11 11:53:22 +00:00