Secondary namespaces have a different malloc. Allocating the
buffer in one namespace and freeing it another results in
heap corruption. Fix this by using a static string (potentially
translated) in secondary namespaces. It would also be possible
to use the malloc from the initial namespace to manage the
buffer, but these functions would still not be safe to use in
auditors etc. because a call to strerror could still free a
buffer while it is used by the application. Another approach
could use proper initial-exec TLS, duplicated in secondary
namespaces, but that would need a callback interface for freeing
libc resources in namespaces on thread exit, which does not exist
today.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
I used these shell commands:
../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright
(cd ../glibc && git commit -am"[this commit message]")
and then ignored the output, which consisted lines saying "FOO: warning:
copyright statement not found" for each of 7061 files FOO.
I then removed trailing white space from math/tgmath.h,
support/tst-support-open-dev-null-range.c, and
sysdeps/x86_64/multiarch/strlen-vec.S, to work around the following
obscure pre-commit check failure diagnostics from Savannah. I don't
know why I run into these diagnostics whereas others evidently do not.
remote: *** 912-#endif
remote: *** 913:
remote: *** 914-
remote: *** error: lines with trailing whitespace found
...
remote: *** error: sysdeps/unix/sysv/linux/statx_cp.c: trailing lines
I used these shell commands:
../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright
(cd ../glibc && git commit -am"[this commit message]")
and then ignored the output, which consisted lines saying "FOO: warning:
copyright statement not found" for each of 6694 files FOO.
I then removed trailing white space from benchtests/bench-pthread-locks.c
and iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c, to work around this
diagnostic from Savannah:
remote: *** pre-commit check failed ...
remote: *** error: lines with trailing whitespace found
remote: error: hook declined to update refs/heads/master
The sigabbrev_np returns the abbreviated signal name (e.g. "HUP" for
SIGHUP) while sigdescr_np returns the string describing the error
number (e.g "Hangup" for SIGHUP). Different than strsignal,
sigdescr_np does not attempt to translate the return description and
both functions return NULL for an invalid signal number.
They should be used instead of sys_siglist or sys_sigabbrev and they
are both thread and async-signal safe. They are added as GNU
extensions on string.h header (same as strsignal).
Checked on x86-64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
and s390x-linux-gnu.
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
The per-thread state is refactored two use two strategies:
1. The default one uses a TLS structure, which will be placed in the
static TLS space (using __thread keyword).
2. Linux allocates via struct pthread and access it through THREAD_*
macros.
The default strategy has the disadvantage of increasing libc.so static
TLS consumption and thus decreasing the possible surplus used in
some scenarios (which might be mitigated by BZ#25051 fix).
It is used only on Hurd, where accessing the thread storage in the in
single thread case is not straightforward (afaiu, Hurd developers could
correct me here).
The fallback static allocation used for allocation failure is also
removed: defining its size is problematic without synchronizing with
translated messages (to avoid partial translation) and the resulting
usage is not thread-safe.
Checked on x86-64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu,
and s390x-linux-gnu.
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
The symbol was deprecated by strsignal and its usage imposes issues
such as copy relocations.
Its internal name is changed to __sys_siglist and __sys_sigabbrev to
avoid static linking usage. The compat code is also refactored, since
both Linux and Hurd usage the same strategy: export the same array with
different object sizes.
The libSegfault change avoids calling strsignal on the SIGFAULT signal
handler (the current usage is already sketchy, adding a call that
potentially issue locale internal function is even sketchier).
Checked on x86_64-linux-gnu and i686-linux-gnu. I also run a check-abi
on all affected platforms.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2002-08-04 Ulrich Drepper <drepper@redhat.com>
* stdio-common/psignal.c: Declare _sys_siglist_internal. Use USEINT
to access _sys_siglist.
* string/strsignal.c: Likewise.
* sysdeps/generic/siglist.c: Add _sys_siglist_internal alias.
* sysdeps/gnu/siglist.c: Likewise.
* sysdeps/unix/siglist.c: Likewise.
* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.
* libio/fileops.c: Add missing INTUSEs for _IO_file_jumps.
* libio/wfileops.c: Add missing INTUSE for _IO_file_close.
* intl/dcigettext.c: Define _nl_default_dirname_internal as hidden
alias and use it.
* intl/bindtextdom.c: Use _nl_default_dirname_internal.
* include/netinet/in.h: Add declaration of in6addr_loopback_internal.
* inet/in6_addr.c: Add INTVARDEF for in6addr_loopback.
* sysdeps/posix/getaddrinfo.c: Use INTUSE for in6addr_loopback access.
* include/time.h: Add libc_hidden_proto for __gmtime_r.
* time/gmtime.c (__gmtime_r): Add libc_hidden_def.
* iconv/Versions: Replace __gconv_alias_db, __gconv_modules_db,
and __gconv_cache with __gconv_get_alias_db, __gconv_get_modules_db,
and __gconv_get_cache respectively.
* iconv/gconv_cache.c (gconv_cache): Renamed for __gconv_cache and
defined static. Change all users.
(__gconv_get_cache): New function.
* iconv/gconv_db.c (__gconv_get_modules_db): New function.
(__gconv_get_alias_db): New function.
* iconv/gconv_int.h (__gconv_alias_db): Declare as hidden.
(__conv_modules_db): Likewise.
Add prototypes for __gconv_get_cache, __gconv_get_modules_db,
and __gconv_get_alias_db.
* iconv/iconv_prog.c: Use the new functions instead of accessing the
variables.
* include/stdlib.h: Add prototype and libc_hidden_proto for
__default_morecore.
* sysdeps/generic/morecore.c: Include <stdlib.h>.
* malloc/obstack.c: Remove fputs macro.
* malloc/mtrace.c: Remove fopen macro.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
1999-11-10 Andreas Jaeger <aj@suse.de>
* string/strsignal.c (strsignal): Correct check for snprintf
return value.
* argp/argp-fmtstream.c (__argp_fmtstream_printf): Likewise.
* misc/efgcvt_r.c (APPEND): Correct check for too small buffer
according to changed snprintf return value.
Reported by Lawrence K. Chen <lchen@opentext.com>.
* misc/tst-efgcvt.c (special): Add tests for a too small buffer
for ecvt_r and fcvt_r.
1998-01-31 11:18 Ulrich Drepper <drepper@cygnus.com>
* misc/efgcvt_r.c (fcvt_r): Handle illegal NDIGIT correctly.
[PR libc/410]
* misc/Makefile (tests): Add tst-efgcvt.
* misc/tst-efgcvt.c: New file.
* manual/arith.texi (Parsing of Integers): Correct description of
strtoul. Pointed out by Scott Snyder <snyder@fnald0.fnal.gov>.
[PR libc/396]
* misc/lsearch.c (lsearch): Return a pointer to the new element
if one was "allocated".
* string/strsignal.c: NSIG is not a valid index into
_sys_siglist. Don't zap the last character of the "Unknown
signal" message.
1998-01-22 00:55 Ulrich Drepper <drepper@happy.cygnus.com>
* libc.map: Add __libc_uid, __libc_pid, __syscall_rt_sigqueueinfo,
__pread64, __pwrite64, and __getpid.
* libc/rt/aio_misc.c: Use pread and pwrite instead of __ protected
versions.
1998-01-06 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/alpha/syscalls.list: Define the
cancelable socket functions as __libc_xxx with __xxx as weak
alias.
* sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/m68k/socket.S: Allow __socket to be
redefined.
* sysdeps/unix/sysv/linux/i386/socket.S: Likewise.
* sysdeps/unix/sysv/linux/arm/socket.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/socket.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Likewise.
* sysdeps/unix/sysv/linux/accept.S: Make __libc_xxx the main name
and __xxx a weak alias.
* sysdeps/unix/sysv/linux/connect.S: Likewise.
* sysdeps/unix/sysv/linux/recv.S: Likewise.
* sysdeps/unix/sysv/linux/recvfrom.S: Likewise.
* sysdeps/unix/sysv/linux/recvmsg.S: Likewise.
* sysdeps/unix/sysv/linux/send.S: Likewise.
* sysdeps/unix/sysv/linux/sendmsg.S: Likewise.
* sysdeps/unix/sysv/linux/sendto.S: Likewise.
1998-01-21 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* locale/langinfo.h: Add defines.
* dirent/dirent.h: Add defines for DT_*, check also for
_DIRENT_HAVE_D_TYPE.
Suggested by Roland McGrath.
1998-01-16 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/netinet/ip_fw.h:
Update from Linux 2.1.73+79.
* README.template: Update information about possible
configurations.
* manual/mbyte.texi (Wide String Conversion): Fix declaration of
wcstombs. Pointed out by Jochen Voss <voss@mathematik.uni-kl.de>.
[PR libc/417].
* manual/time.texi (Priority): Correct description of
PRIO_MAX. Pointed out by Jochen Voss <voss@mathematik.uni-kl.de>.
[PR libc/416].
11998-01-21 21:34 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/alpha/fpu/bits/mathdef.h: Add definition of FP_ILOGB0 and
FP_ILOGNAN. Patch by a sun <asun@zoology.washington.edu>.
1998-01-21 17:53 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/_strerror.c: Handle BUFLEN == 0. Reported by
Andreas Jaeger.
1998-01-20 18:13 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-collate.c: Little optimizations.
* stdio-common/xbug.c: Unset LD_LIBRRARY_PATH variable.
* string/Makefile (tests): Add tst-inlcall.
* string/tst-inlcall.c: New file.
* string/strsignal.c: Add support for real-time signals.
* sysdeps/generic/_strerror.c: Fix Handling of unknown error in
presense of small buffer.
* sysdeps/i386/bits/string.h: Define _HAVE_STRING_ARCH_* macros.
* sysdeps/i386/i486/bits/string.h: Correct strrchr implementation
for i686.
* sysdeps/unix/sysv/linux/siglist.c: Change length of arrays to
_NSIG + 1.
1998-01-02 15:10 Matthias Urlichs <urlichs@noris.de>
* Rules: Add explicit rule for dummy.o; at least one library needs
it and it isn't autogenerated by the default rules.
1997-12-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* math/libm-test.c: Tweak epsilons.
1997-12-31 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* math/test-fenv.c (feenv_nomask_test): Avoid dumping core in the
child.
(feenv_mask_test): Likewise.
1998-01-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makeconfig: Don't export CPPFLAGS.
1998-01-01 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sunrpc/rpc_main.c (parseargs): Use perror to print error
message.
1998-01-15 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* nss/nss_db/db-alias.c (_nss_db_getaliasent_r): Don't include
terminating null in key size.
1998-01-13 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* nss/nss_files/files-service.c: Fix allocation size to include
length of PROTO.
* nss/nss_db/db-XXX.c (lookup): Always set errno and h_errno if
applicable. Fix return value and error checking.
(CONCAT(_nss_db_get,ENTNAME_r)): Loop around to skip over
unparsable lines.
(DB_LOOKUP): Allocate space for terminating null byte.
* nss/db-Makefile ($(VAR_DB)/passwd.db): Don't handle duplicate
uids specially.
* db2/makedb.c (process_input): Continue processing if a duplicate
key is encountered.
1998-01-19 15:20 Ulrich Drepper <drepper@cygnus.com>
* time/tzfile.h: Updated from tzcode1998b.
* time/zdump.c: Likewise.
* time/zic.c: Likewise.
* time/africa: Update from tzdata1998b.
* time/antarctica: Likewise.
* time/asia: Likewise.
* time/australasia: Likewise.
* time/etcetera: Likewise.
* time/europe: Likewise.
* time/leapseconds: Likewise.
* time/northamerica: Likewise.
* time/southamerica: Likewise.
1998-01-12 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* nss/nss_files/files-alias.c (get_next_alias): Do mail alias
lookups ignoring case.
* nss/nss_files/files-network.c: Do network lookups ignoring
case.
* nss/nss_files/files-hosts.c: Do hostname lookups ignoring
case.
* nss/nss_files/files-parse.c (LOOKUP_NAME_CASE): New macro for
case insensitive comparing.
Patches by Cristian Gafton <gafton@redhat.com>.
1998-01-09 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/net/if.h: Add IFF_*defines. Suggested
by Roland McGrath. [PR libc/395]
1998-01-08 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/arith.texi (Parsing of Integers): Correct description of
strtoul. Pointed out by Scott Snyder <snyder@fnald0.fnal.gov>.
[PR libc/396]
1997-12-30 14:14 Matthias Urlichs <urlichs@noris.de>
* misc/lsearch.c (lsearch): Return a pointer to the new element
if one was "allocated".
1997-12-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* string/strsignal.c: NSIG is not a valid index into
_sys_siglist. Don't zap the last character of the "Unknown
signal" message.
1998-01-19 15:08 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/charmap.c (parse_charmap): Correct parsing of
ellipsis expressions.
* locale/programs/charset.c (insert_char): Correctly insert value
of eliipsis expression.
Mon Oct 21 01:32:36 1996 Ulrich Drepper <drepper@cygnus.com>
* elf/rtld.c (dl_main): Move initialization of `_dl_starting_up'
to beginning of function. So libc functions can use this flag.
* sysdeps/generic/_strerror.c: Don't use dgettext for message
translation while `_dl_starting_up' is nonzero.
* elf/dl-deps.c (_dl_map_object_deps): Add new parameter
TRACE_MODE.
Pass parameter value to _dl_map_object.
* elf/dl-load (_dl_map_object): Add new parameter TRACE_MODE.
If TRACE_MODE is nonzero don#t signal error when shared lib
is not found. Instead create fake entry for link map.
* dl-open.c (dl-open): Pass 0 for new argument to _dl_map_object.
* dl-runtime.c (_dl_object_relocation_scope): Pass 0 for new
argument to _dl_map_object_deps.
* elf/link.h: Add new parameter TRACE_MODE for prototypes of
_dl_map_object and _dl_map_object_deps.
* elf/rtld.c (dl_main): Pass 0 for new argument to _dl_map_object
and _dl_map_object_deps.
When mode == trace test for l_opencount == 0 before printing
link information since this means the lib is not found.
Sun Oct 20 22:19:58 1996 Ulrich Drepper <drepper@cygnus.com>
* rpm/template: Add INSTALL to %doc line to follow copyright
restrictions which demand the distribution of the copyright
messages in INSTALL even for binary distributions.
* features.h: Rename to...
* features.h.in: ...this. Change value of __GNU_LIBRARY__ to 2
(for major version numberof package) and add __GNU_LIBRARY_MINOR__
and __GNU_LIBRARY_INTERFACE__.
* Makefile ($(objpfx)features.h): New rule to generate features.h
from template features.h.in.
* sysdeps/unix/sysv/linux/getsysstats.c: Include <paths.h>.
Sun Oct 20 00:00:13 1996 Richard Henderson <rth@tamu.edu>
* locale/programs/linereader.c (lr_open): Cast away const before free.
(lr_close): Likewise.
* misc/mntent.h: Move _PATH_MNTTAB & _PATH_MOUNTED to paths.h.
* misc/paths.h: Move to ...
* sysdeps/generic/paths.h: ... here.
* paths.h: Remove.
* sysdeps/unix/sysv/linux/paths.h: New file. Correct _PATH_STDPATH,
_PATH_MAILDIR, _PATH_MOUNTED, _PATH_UNIX to comply with the fsstd.
* nss/nss_db/db-netgrp.h: Include <string.h>.
* stdio-common/psignal.c: De-ansidecl-ify. Allow NULL entries in
_sys_siglist, which result in the "Unknown signal" message.
* string/strsignal.c: Likewise.
* sysdeps/generic/Makefile [stdio-common]: If $(inhibit-siglist),
don't auto-generate siglist.c.
* sysdeps/unix/sysv/linux/Makefile [stdio-common]: Set inhibit-siglist.
* sysdeps/unix/sysv/linux/siglist.c: New file. Not needing to
autogenerate makes bootstrapping and cross-compiling much easier.
* sysdeps/unix/sysv/linux/siglist.h: New file.
* stdlib/longlong.h: Prototype __udiv_qrnnd.
* sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_headers): Remove
sys/io.h. It is already added in .../linux/Makefile.
* sysdeps/unix/sysv/linux/alpha/sigaction.h: New file.
* sysdeps/unix/sysv/linux/alpha/signum.h: New file.
* sysdeps/unix/sysv/linux/alpha/statbuf.h: New file.
Sun Oct 20 17:17:12 1996 Ulrich Drepper <drepper@cygnus.com>
Add implementation of POSIX.1g function getaddrinfo.
* posix/Makefile (routines): Add getaddrinfo.
* sysdeps/posix/getaddrinfo.c.: New file. Add implementation by
Craig Metz.
* sysdeps/stub/getaddrinfo.c: New file. Stub implementation.
* resolv/netdb.h [__USE_POSIX]: Add getaddrinfo prototypes and
related constants and structures.
Sun Oct 20 13:02:34 1996 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/stub/lockfile.c: Rename functions to __internal_*.
Make all old names weak alises so that they can be replaced
by libpthread.
* stdio-common/vfprintf.c: Only declare __flockfile and __funlockfile
for !USE_IN_LIBIO.
[USE_IN_LIBIO]: Call _IO_flockfile and _IO_funlockfile instead of
__flockfile and __funlockfile.
Reported by NIIBE Yutaka.
* crypt/md5.c: Change form of copyright message according to GNITS
rules.
Add warning for requirement on RESBUF parameter for `md5_finish_ctx'
and `md5_read_ctx' function.
* crypt/md5.h: Likewise.
* grp/testgrp.c: Don't use perror for error cases since getgr* and
getpw* functions do not return usable error codes.
Sun Oct 19 23:05:32 1996 Jim Meyering <meyering@asic.sc.ti.com>
* crypt/md5.c (md5_process_bytes): Used casting for pointer
arithmetic.
Sun Oct 20 03:53:23 1996 Ulrich Drepper <drepper@cygnus.com>
* sunrpc/Makefile (others): Remove portmap here, too.