de6da571ee
Remove some unnecessary redefinitions of std symbols.
...
Two files in stdio-common were unnecessarily redefining some standard
symbols as their _IO_ aliases.
* stdio-common/vfprintf.c: Don't redefine FILE, va_list, or BUFSIZ.
* stdio-common/tstgetln.c: Don't redefine ssize_t.
2018-02-05 19:58:01 -05:00
688903eb3e
Update copyright dates with scripts/update-copyrights.
...
* All files with FSF copyright notices: Update copyright dates
using scripts/update-copyrights.
* locale/programs/charmap-kw.h: Regenerated.
* locale/programs/locfile-kw.h: Likewise.
2018-01-01 00:32:25 +00:00
d10b132bf5
stdio-common: Use array_length and array_end macros
2017-11-02 12:45:20 +01:00
2fa6d086d1
stdio-common: Remove internal_function attribute
2017-08-31 18:52:00 +02:00
edc1686af0
vfprintf: Reuse work_buffer in group_number
2017-06-29 09:37:13 +02:00
12d5853e22
vfprintf: Use struct scratch_buffer for positional arguments allocation
2017-06-29 09:37:04 +02:00
08d01cae60
vfprintf: Reduce WORK_BUFFER_SIZE for wchar_t builds
2017-06-29 09:34:22 +02:00
cf2046ec7d
float128: Add strfromf128
...
Add strfromf128 to stdlib when _Float128 support is enabled.
* stdio-common/printf-parsemb.c (__parse_one_specmb): Initialize
spec->info.is_binary128 to zero.
* stdio-common/printf.h (printf_info): Add new member is_binary128
to indicate that the number being converted to string is compatible
with the IEC 60559 binary128 format.
* stdio-common/printf_fp.c (__printf_fp_l): Add code to deal with
_Float128 numbers.
* stdio-common/printf_fphex.c: Include ieee754_float128.h and
ldbl-128/printf_fphex_macros.h
(__printf_fphex): Add code to deal with _Float128 numbers.
* stdio-common/printf_size.c (__printf_size): Likewise.
* stdio-common/vfprintf.c (process_arg): Initialize member
info.is_binary128 to zero.
* stdlib/fpioconst.h (FLT128_MAX_10_EXP_LOG): New macro.
* stdlib/stdlib.h: Include bits/floatn.h for _Float128 support.
(strfromf128): New declaration.
* stdlib/strfrom-skeleton.c (STRFROM): Set member info.is_binary128
to one.
* sysdeps/ieee754/float128/Makefile: Add strfromf128.
* sysdeps/ieee754/float128/Versions: Likewise.
* sysdeps/ieee754/float128/strfromf128.c: New file.
2017-06-07 17:08:21 -03:00
7224e32d7b
vfprintf.c: Refactor magic number 32 into EXTSIZ.
...
The magic number 32 is used everywhere as extra size to
use when doing certain operations. This commit refactors
that into a macro so you can change this value if you're
debugging something in a local build.
2017-05-08 16:13:16 -04:00
bfff8b1bec
Update copyright dates with scripts/update-copyrights.
2017-01-01 00:14:16 +00:00
326e288b1e
vfprintf: Avoid creating a VLA which complicates stack management
2016-09-02 15:36:52 +02:00
db3476aff1
libio: Implement vtable verification [BZ #20191 ]
...
This commit puts all libio vtables in a dedicated, read-only ELF
section, so that they are consecutive in memory. Before any indirect
jump, the vtable pointer is checked against the section boundaries,
and the process is terminated if the vtable pointer does not fall into
the special ELF section.
To enable backwards compatibility, a special flag variable
(_IO_accept_foreign_vtables), protected by the pointer guard, avoids
process termination if libio stream object constructor functions have
been called earlier. Such constructor functions are called by the GCC
2.95 libstdc++ library, and this mechanism ensures compatibility with
old binaries. Existing callers inside glibc of these functions are
adjusted to call the original functions, not the wrappers which enable
vtable compatiblity.
The compatibility mechanism is used to enable passing FILE * objects
across a static dlopen boundary, too.
2016-06-23 20:01:52 +02:00
fdcf1c9480
vfprintf: Fix memory with large width and precision [BZ #19931 ]
...
Free a previously allocated work buffer if it is not large enough.
2016-04-25 14:10:26 +02:00
f7a9f785e5
Update copyright dates with scripts/update-copyrights.
2016-01-04 16:05:18 +00:00
db8ad8fac3
vfprintf: Rewrite printf_positional to use struct scratch_buffer
2015-10-17 12:05:12 +02:00
560b04462f
Fix BZ #18872 -- memory leak in printf_positional.
2015-09-16 09:16:11 -07:00
ec999b8e5e
Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912).
...
It was noted in
<https://sourceware.org/ml/libc-alpha/2012-09/msg00305.html > that the
bits/*.h naming scheme should only be used for installed headers.
This patch renames bits/libc-lock.h to plain libc-lock.h and
bits/libc-lockP.h to plain libc-lockP.h to follow that convention.
Note that I don't know where libc-lockP.h comes from for Hurd (the
Hurd libc-lock.h includes libc-lockP.h, but the only libc-lockP.h in
the glibc source tree is for NPTL) - some unmerged patch? - but I
updated the #include in the Hurd libc-lock.h anyway.
Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).
[BZ #14912 ]
* bits/libc-lock.h: Move to ...
* sysdeps/generic/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
* sysdeps/mach/hurd/bits/libc-lock.h: Move to ...
* sysdeps/mach/hurd/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
[_LIBC]: Include <libc-lockP.h> instead of <bits/libc-lockP.h>.
* sysdeps/mach/bits/libc-lock.h: Move to ...
* sysdeps/mach/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
* sysdeps/nptl/bits/libc-lock.h: Move to ...
* sysdeps/nptl/libc-lock.h: ...here.
(_BITS_LIBC_LOCK_H): Rename macro to _LIBC_LOCK_H.
* sysdeps/nptl/bits/libc-lockP.h: Move to ...
* sysdeps/nptl/libc-lockP.h: ...here.
(_BITS_LIBC_LOCKP_H): Rename macro to _LIBC_LOCKP_H.
* crypt/crypt_util.c: Include <libc-lock.h> instead of
<bits/libc-lock.h>.
* dirent/scandir-tail.c: Likewise.
* dlfcn/dlerror.c: Likewise.
* elf/dl-close.c: Likewise.
* elf/dl-iteratephdr.c: Likewise.
* elf/dl-lookup.c: Likewise.
* elf/dl-open.c: Likewise.
* elf/dl-support.c: Likewise.
* elf/dl-writev.h: Likewise.
* elf/rtld.c: Likewise.
* grp/fgetgrent.c: Likewise.
* gshadow/fgetsgent.c: Likewise.
* gshadow/sgetsgent.c: Likewise.
* iconv/gconv_conf.c: Likewise.
* iconv/gconv_db.c: Likewise.
* iconv/gconv_dl.c: Likewise.
* iconv/gconv_int.h: Likewise.
* iconv/gconv_trans.c: Likewise.
* include/link.h: Likewise.
* inet/getnameinfo.c: Likewise.
* inet/getnetgrent.c: Likewise.
* inet/getnetgrent_r.c: Likewise.
* intl/bindtextdom.c: Likewise.
* intl/dcigettext.c: Likewise.
* intl/finddomain.c: Likewise.
* intl/gettextP.h: Likewise.
* intl/loadmsgcat.c: Likewise.
* intl/localealias.c: Likewise.
* intl/textdomain.c: Likewise.
* libidn/idn-stub.c: Likewise.
* libio/libioP.h: Likewise.
* locale/duplocale.c: Likewise.
* locale/freelocale.c: Likewise.
* locale/newlocale.c: Likewise.
* locale/setlocale.c: Likewise.
* login/getutent_r.c: Likewise.
* login/getutid_r.c: Likewise.
* login/getutline_r.c: Likewise.
* login/utmp-private.h: Likewise.
* login/utmpname.c: Likewise.
* malloc/mtrace.c: Likewise.
* misc/efgcvt.c: Likewise.
* misc/error.c: Likewise.
* misc/fstab.c: Likewise.
* misc/getpass.c: Likewise.
* misc/mntent.c: Likewise.
* misc/syslog.c: Likewise.
* nis/nis_call.c: Likewise.
* nis/nis_callback.c: Likewise.
* nis/nss-default.c: Likewise.
* nis/nss_compat/compat-grp.c: Likewise.
* nis/nss_compat/compat-initgroups.c: Likewise.
* nis/nss_compat/compat-pwd.c: Likewise.
* nis/nss_compat/compat-spwd.c: Likewise.
* nis/nss_nis/nis-alias.c: Likewise.
* nis/nss_nis/nis-ethers.c: Likewise.
* nis/nss_nis/nis-grp.c: Likewise.
* nis/nss_nis/nis-hosts.c: Likewise.
* nis/nss_nis/nis-network.c: Likewise.
* nis/nss_nis/nis-proto.c: Likewise.
* nis/nss_nis/nis-pwd.c: Likewise.
* nis/nss_nis/nis-rpc.c: Likewise.
* nis/nss_nis/nis-service.c: Likewise.
* nis/nss_nis/nis-spwd.c: Likewise.
* nis/nss_nisplus/nisplus-alias.c: Likewise.
* nis/nss_nisplus/nisplus-ethers.c: Likewise.
* nis/nss_nisplus/nisplus-grp.c: Likewise.
* nis/nss_nisplus/nisplus-hosts.c: Likewise.
* nis/nss_nisplus/nisplus-initgroups.c: Likewise.
* nis/nss_nisplus/nisplus-network.c: Likewise.
* nis/nss_nisplus/nisplus-proto.c: Likewise.
* nis/nss_nisplus/nisplus-pwd.c: Likewise.
* nis/nss_nisplus/nisplus-rpc.c: Likewise.
* nis/nss_nisplus/nisplus-service.c: Likewise.
* nis/nss_nisplus/nisplus-spwd.c: Likewise.
* nis/ypclnt.c: Likewise.
* nptl/libc_pthread_init.c: Likewise.
* nss/getXXbyYY.c: Likewise.
* nss/getXXent.c: Likewise.
* nss/getXXent_r.c: Likewise.
* nss/nss_db/db-XXX.c: Likewise.
* nss/nss_db/db-netgrp.c: Likewise.
* nss/nss_db/nss_db.h: Likewise.
* nss/nss_files/files-XXX.c: Likewise.
* nss/nss_files/files-alias.c: Likewise.
* nss/nsswitch.c: Likewise.
* posix/regex_internal.h: Likewise.
* posix/wordexp.c: Likewise.
* pwd/fgetpwent.c: Likewise.
* resolv/res_hconf.c: Likewise.
* resolv/res_libc.c: Likewise.
* shadow/fgetspent.c: Likewise.
* shadow/lckpwdf.c: Likewise.
* shadow/sgetspent.c: Likewise.
* socket/opensock.c: Likewise.
* stdio-common/reg-modifier.c: Likewise.
* stdio-common/reg-printf.c: Likewise.
* stdio-common/reg-type.c: Likewise.
* stdio-common/vfprintf.c: Likewise.
* stdio-common/vfscanf.c: Likewise.
* stdlib/abort.c: Likewise.
* stdlib/cxa_atexit.c: Likewise.
* stdlib/fmtmsg.c: Likewise.
* stdlib/random.c: Likewise.
* stdlib/setenv.c: Likewise.
* string/strsignal.c: Likewise.
* sunrpc/auth_none.c: Likewise.
* sunrpc/bindrsvprt.c: Likewise.
* sunrpc/create_xid.c: Likewise.
* sunrpc/key_call.c: Likewise.
* sunrpc/rpc_thread.c: Likewise.
* sysdeps/arm/backtrace.c: Likewise.
* sysdeps/generic/ldsodefs.h: Likewise.
* sysdeps/generic/stdio-lock.h: Likewise.
* sysdeps/generic/unwind-dw2-fde.c: Likewise.
* sysdeps/i386/backtrace.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-compat.c: Likewise.
* sysdeps/m68k/backtrace.c: Likewise.
* sysdeps/mach/hurd/cthreads.c: Likewise.
* sysdeps/mach/hurd/dirstream.h: Likewise.
* sysdeps/mach/hurd/malloc-machine.h: Likewise.
* sysdeps/nptl/malloc-machine.h: Likewise.
* sysdeps/nptl/stdio-lock.h: Likewise.
* sysdeps/posix/dirstream.h: Likewise.
* sysdeps/posix/getaddrinfo.c: Likewise.
* sysdeps/posix/system.c: Likewise.
* sysdeps/pthread/aio_suspend.c: Likewise.
* sysdeps/s390/s390-32/backtrace.c: Likewise.
* sysdeps/s390/s390-64/backtrace.c: Likewise.
* sysdeps/unix/sysv/linux/check_pf.c: Likewise.
* sysdeps/unix/sysv/linux/if_index.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/getutent_r.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/getutid_r.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/getutline_r.c: Likewise.
* sysdeps/unix/sysv/linux/shm-directory.c: Likewise.
* sysdeps/unix/sysv/linux/system.c: Likewise.
* sysdeps/x86_64/backtrace.c: Likewise.
* time/alt_digit.c: Likewise.
* time/era.c: Likewise.
* time/tzset.c: Likewise.
* wcsmbs/wcsmbsload.c: Likewise.
* nptl/tst-initializers1.c (do_test): Refer to <libc-lock.h>
instead of <bits/libc-lock.h> in comment.
2015-09-08 21:11:03 +00:00
0f87de79e9
vfprintf: Remove label name switching for the jump table
...
Different labels are no longer needed because the tables are now in
separate functions.
2015-05-21 16:48:46 +02:00
f8194fa6f9
vfprintf: Introduce printf_positional function
...
This splits a considerable chunk of code from the main vfprintf
function. This will make it easier to remove the use of extend_alloca
from the positional argument handling code.
2015-05-21 16:46:46 +02:00
f0f98189d8
vfprintf: Move jump table definition and the macros out of function
...
The second jump table will be moved to a separate function
in the next commit.
2015-05-21 16:45:09 +02:00
1597b7447a
vfprintf: Define WORK_BUFFER_SIZE
...
This constant will allow us to refer to the number of elements in
work_buffer across a function call boundary.
2015-03-06 11:06:33 +01:00
627e7a5f5b
vfprintf: Introduce JUMP_TABLE_BASE_LABEL
...
This makes the offset handling more explicit and avoids
cross-references between the jump tables.
2015-03-06 10:29:49 +01:00
d176a41a62
vfprintf: Introduce THOUSANDS_SEP_T
...
This avoids preprocessor conditionals in function declarations.
2015-03-06 10:26:58 +01:00
b168057aaa
Update copyright dates with scripts/update-copyrights.
2015-01-02 16:29:47 +00:00
a5357b7ce2
CVE-2012-3406: Stack overflow in vfprintf [BZ #16617 ]
...
A larger number of format specifiers coudld cause a stack overflow,
potentially allowing to bypass _FORTIFY_SOURCE format string
protection.
2014-12-15 10:09:33 +01:00
4fdfe821e2
Correctly handle %p in wprintf (BZ #16890 )
2014-05-01 20:42:08 +02:00
c15cf13a8a
Revert "Fix _IO_JUMPS_OFFSET -Wundef warnings"
...
This reverts commit f7efd7c3df
.
2014-03-17 20:37:42 +00:00
f7efd7c3df
Fix _IO_JUMPS_OFFSET -Wundef warnings
...
ChangeLog:
2014-03-17 Will Newton <will.newton@linaro.org >
* libio/genops.c: Check whether
_IO_JUMPS_OFFSET is defined with #ifdef rather
than #if.
* libio/libioP.h: Likewise.
* stdio-common/vfprintf.c: Likewise.
2014-03-17 16:05:23 +00:00
94c8a4bc57
Fix integer overflow in vfwprintf. Fixes bug 14286.
2014-01-07 12:05:32 +01:00
d4697bc93d
Update copyright notices with scripts/update-copyrights
2014-01-01 22:00:23 +10:00
3d110c7c6e
Fix fwrite() reading beyond end of buffer in error path
...
Partially revert commits 2b766585f9
and
de2fd463b1
, which were intended to fix BZ#11741
but caused another, likely worse bug, namely that fwrite() and fputs() could,
in an error path, read data beyond the end of the specified buffer, and
potentially even write this data to the file.
Fix BZ#11741 properly by checking the return value from _IO_padn() in
stdio-common/vfprintf.c.
2013-10-11 22:29:38 +05:30
2e09a79ada
Avoid use of "register" as optimization hint.
2013-06-07 22:24:35 +00:00
e1b42695ea
Replace __builtin_expect(..., 0) with __glibc_unlikely().
2013-03-05 21:38:19 -08:00
cdcf361fda
* stdio-common/vfprintf.c (vfprintf): Check malloc return; don't
...
call free(NULL).
2013-03-05 13:44:33 -08:00
70d9946a44
Remove __ptrvalue, __bounded and __unbounded.
2013-02-13 23:30:40 +00:00
568035b787
Update copyright notices with scripts/update-copyrights.
2013-01-02 19:05:09 +00:00
2b766585f9
printf should return negative value on error
...
[BZ #11741 ]
Fixed bug where printf and family may return a spurious success when
printing padded formats.
2012-11-16 19:13:11 +05:30
715a900c90
2012-09-28 Andreas Schwab <schwab@linux-m68k.org>
...
[BZ #6530 ]
* stdio-common/vfprintf.c (process_string_arg): Revert
2000-07-22 change.
2011-09-28 Jonathan Nieder <jrnieder@gmail.com >
* stdio-common/Makefile (tst-sprintf-ENV): Set environment
for testcase.
* stdio-common/tst-sprintf.c: Include <locale.h>
(main): Test sprintf's handling of incomplete multibyte
characters.
2012-09-28 12:49:51 -06:00
d18ea0c5e6
Remove use of INTDEF/INTUSE in libio
2012-05-24 23:06:20 +02:00
135ffda8b8
Tighten up vfprintf width, precision, and total length overflow handling.
...
With help from Paul Eggert, Carlos O'Donell, and Roland McGrath.
* stdio-common/printf-parse.h (read_int): Change return type to
'int', return -1 on INT_MAX overflow.
* stdio-common/vfprintf.c (vfprintf): Validate width and precision
against overflow of INT_MAX. Set errno to EOVERFLOW when 'done'
overflows INT_MAX. Check for overflow of in-format-string precision
values properly. Use EOVERFLOW rather than ERANGE throughout. Use
SIZE_MAX not INT_MAX for integer overflow test.
* stdio-common/printf-parsemb.c: If read_int signals an overflow,
skip the construct in the format string but do not record anything.
* stdio-common/bug22.c: Adjust to test both width/prevision
INT_MAX overflow as well as total length INT_MAX overflow. Check
explicitly for proper errno values.
2012-04-02 14:31:19 -07:00
eb96ffb07d
Move stdio-common/_itoa.h to sysdeps/generic
2012-03-20 16:00:23 -07:00
f72ed77d71
Formatting fixes
2012-03-06 21:45:53 -05:00
fa0355175d
2012-03-02 Kees Cook <keescook@chromium.org>
...
* stdio-common/vfprintf.c (vfprintf): add missing errno settings.
2012-03-05 10:18:17 +01:00
7c1f4834d3
2012-03-02 Kees Cook <keescook@chromium.org>
...
[BZ #13656 ]
* stdio-common/vfprintf.c (vfprintf): Check for nargs overflow and
possibly allocate from heap instead of stack.
* stdio-common/bug-vfprintf-nargs.c: New file.
* stdio-common/Makefile (tests): Add nargs overflow test.
2012-03-05 10:17:22 +01:00
59ba27a63a
Replace FSF snail mail address with URLs.
2012-02-09 23:18:22 +00:00
a4647e727a
Fix extension of array in extended printf format handling
2011-12-17 21:27:25 -05:00
aec84f5395
Set stream errors in more cases
...
Also avoid unnecessarily setting errno when testing for TTY.
2011-05-21 00:42:06 -04:00
84a4211850
Fix allocation when handling positional parameters in printf.
2011-02-20 07:59:49 -05:00
07eb4b716e
Always allow overwriting printf modifiers etc.
2010-12-24 19:28:32 -05:00
199eb0de8d
Check for integer overflows in formatting functions
2009-09-29 06:11:59 -07:00