Commit Graph

13 Commits

Author SHA1 Message Date
Adhemerval Zanella
116f1c64d8 posix: Consolidate Linux glob implementation
This patch consolidates the glob implementation.  The main changes are:

  * On Linux all implementation now uses the default one at
    sysdeps/unix/sysv/linux/glob{free}{64}.c with the exception
    of alpha (which requires specific versioning) and s390-32 (which
    different than other 32 bits ports it does not add a compat one
    symbol for 2.1 version).

  * The default implementation uses XSTAT_IS_XSTAT64 to define whether
    both glob{free} and glob{free}64 should be different implementations.
    For archictures that define XSTAT_IS_XSTAT64, glob{free} is an alias
    to glob{free}64.

  * Move i386 olddirent.h header to Linux default directory, since it is
    the only header with this name and it is shared among different
    architectures (and used on compat glob symbol as well).

Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.

	* sysdeps/unix/sysv/linux/arm/glob64.c: Remove file.
	* sysdeps/unix/sysv/linux/i386/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/m68k/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/globfree64.c: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/wordsize-64/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/wordsize-64/globfree64.c: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/glob.c: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/globfree.c: Likewise.
	* sysdeps/wordsize-64/glob.c: Likewise.
	* sysdeps/wordsize-64/glob64.c: Likewise.
	* sysdeps/wordsize-64/globfree64.c: Likewise.
	* sysdeps/unix/sysv/linux/glob.c: New file.
	* sysdeps/unix/sysv/linux/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/globfree.c: Likewise.
	* sysdeps/unix/sysv/linux/globfree64.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/oldglob.c [SHLIB_COMPAT]: Also
	adds !GLOB_NO_OLD_VERSION as an extra condition.
	* sysdeps/unix/sysv/linux/i386/alphasort64.c: Include olddirent.h
	using relative path instead of absolute one.
	* sysdeps/unix/sysv/linux/i386/getdents64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/readdir64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/olddirent.h: Move to ...
	* sysdeps/unix/sysv/linux//olddirent.h: ... here.
2017-09-08 16:34:02 +02:00
Joseph Myers
bfff8b1bec Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Joseph Myers
f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
Joseph Myers
b168057aaa Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Allan McRae
d4697bc93d Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Florian Weimer
91ce40854d CVE-2013-4237, BZ #14699: Buffer overflow in readdir_r
* sysdeps/posix/dirstream.h (struct __dirstream): Add errcode
	member.
	* sysdeps/posix/opendir.c (__alloc_dir): Initialize errcode
	member.
	* sysdeps/posix/rewinddir.c (rewinddir): Reset errcode member.
	* sysdeps/posix/readdir_r.c (__READDIR_R): Enforce NAME_MAX limit.
	Return delayed error code.  Remove GETDENTS_64BIT_ALIGNED
	conditional.
	* sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c: Do not define
	GETDENTS_64BIT_ALIGNED.
	* sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise.
	* manual/filesys.texi (Reading/Closing Directory): Document
	ENAMETOOLONG return value of readdir_r.  Recommend readdir more
	strongly.
	* manual/conf.texi (Limits for Files): Add portability note to
	NAME_MAX, PATH_MAX.
	(Pathconf): Add portability note for _PC_NAME_MAX, _PC_PATH_MAX.
2013-08-16 09:40:34 +02:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Roland McGrath
cdd915fd16 Missing #include updates for dirstream code move from unix to posix. 2012-08-08 09:18:37 -07:00
Paul Eggert
59ba27a63a Replace FSF snail mail address with URLs. 2012-02-09 23:18:22 +00:00
Ulrich Drepper
1a81139728 Handle unnecessary padding in getdents64.
The getdents64 syscall adds on 32-but platforms padding which isn't needed
and not included in the userlevel data structure definition.  We have to
avoid copying those padding bytes in the readdir64_r function.
2010-04-03 23:51:40 -07:00
Ulrich Drepper
4a381a81fe Update.
2004-03-10  Ulrich Drepper  <drepper@redhat.com>

	* include/libc-symbols.h: Define attribute_compat_text_section and
	attribute_compat_data_section.
	* io/ftw.c: Mark compat code with attribute_compat_text_section.
	* libio/iofopncook.c: Likewise.
	* libio/oldfileops.c: Likewise.
	* libio/oldiofclose.c: Likewise.
	* libio/oldiofdopen.c: Likewise.
	* libio/oldiofgetpos.c: Likewise.
	* libio/oldiofgetpos64.c: Likewise.
	* libio/oldiofopen.c: Likewise.
	* libio/oldiofsetpos.c: Likewise.
	* libio/oldiofsetpos64.c: Likewise.
	* libio/oldiopopen.c: Likewise.
	* libio/oldpclose.c: Likewise.
	* libio/oldtmpfile.c: Likewise.
	* nptl/forward.c: Likewise.
	* nss/getXXbyYY_r.c: Likewise.
	* nss/getXXent_r.c: Likewise.
	* posix/tst-vfork1.c: Likewise.
	* stdlib/canonicalize.c: Likewise.
	* stdlib/old_atexit.c: Likewise.
	* sysdeps/generic/glob.c: Likewise.
	* sysdeps/posix/posix_fallocate64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/alphasort64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/chown.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/glob64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/posix_fadvise64.S: Likewise.
	* sysdeps/unix/sysv/linux/i386/readdir64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/scandir64.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/semctl.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise.

	* sysdeps/unix/sysv/linux/i386/syscalls.list: vm86@@GLIBC_2.3.4
	should be the default symbol. Having none misses the point.
2004-03-10 09:29:17 +00:00
Andreas Jaeger
41bdb6e20c Update to LGPL v2.1.
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.
2001-07-06 04:58:11 +00:00
Ulrich Drepper
56ddf355da Update.
2000-08-11  Ulrich Drepper  <drepper@redhat.com>

	* rt/aio_cancel.c: If canceling a specific request which is running
	*really* do nothing.
	* rt/aio_misc.h: Add `done' to states of a request.
	* rt/aio_misc.c: Add several tests for the correct state.
	Simplify request table memory handling.

2000-08-10  Jakub Jelinek  <jakub@redhat.com>

	* dirent/scandir.c: Use it for scandir64 and old_scandir64 as well.
	* dirent/scandir64.c: Move...
	* sysdeps/generic/scandir64.c: ...here.
	* dirent/alphasort64.c: Move...
	* sysdeps/generic/alphasort64.c: ...here.
	* dirent/versionsort64.c: Move...
	* sysdeps/generic/versionsort64.c: ...here.
	* sysdeps/unix/sysv/linux/i386/dirent/Versions (alphasort64,
	getdirentries64, readdir64, readdir64_r, scandir64, versionsort64):
	Export symbols at GLIBC_2.2.
	* sysdeps/unix/sysv/linux/powerpc/dirent/Versions: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/dirent/Versions: Likewise.
	* include/dirent.h (__readdir64_r, __scandir64, __alphasort64,
	__versionsort64): Add prototypes.
	* io/Versions (__xstat64, __fxstat64, __lxstat64): Export at GLIBC_2.2.
	* sysdeps/unix/sysv/linux/alpha/kernel_stat.h (__xstat_conv): Remove
	unused prototype.
	* sysdeps/unix/sysv/linux/alpha/readdir.c: Export at both GLIBC_2.1
	and GLIBC_2.2.
	* sysdeps/unix/sysv/linux/alpha/readdir_r.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/getdents.c: New.
	* sysdeps/unix/sysv/linux/alpha/getdents64.c: New.
	* sysdeps/unix/sysv/linux/bits/types.h (__ino64_t): Change to
	__u_quad_t.
	* sysdeps/unix/sysv/linux/bits/stat.h (struct stat, struct stat64):
	Adjust for kernel-2.4.0-test6 layout.
	* sysdeps/unix/sysv/linux/i386/fxstat.c (__fxstat64): Export at both
	GLIBC_2.1 and GLIBC_2.2.
	* sysdeps/unix/sysv/linux/i386/lxstat.c (__lxstat64): Likewise.
	* sysdeps/unix/sysv/linux/i386/xstat.c (__xstat64): Likewise.
	* sysdeps/unix/sysv/linux/i386/getdents64.c: New.
	* sysdeps/unix/sysv/linux/i386/olddirent.h: New.
	* sysdeps/unix/sysv/linux/i386/readdir64.c: New.
	* sysdeps/unix/sysv/linux/i386/readdir64_r.c: New.
	* sysdeps/unix/sysv/linux/i386/scandir64.c: New.
	* sysdeps/unix/sysv/linux/i386/alphasort64.c: New.
	* sysdeps/unix/sysv/linux/i386/versionsort64.c: New.
	* sysdeps/unix/sysv/linux/ia64/getdents.c: New.
	* sysdeps/unix/sysv/linux/ia64/getdents64.c: New.
	* sysdeps/unix/sysv/linux/ia64/readdir.c: Include alpha/readdir.c.
	* sysdeps/unix/sysv/linux/ia64/readdir_r.c: Include alpha/readdir_r.c.
	* sysdeps/unix/sysv/linux/mips/bits/types.h (__ino64_t): Change to
	__u_quad_t.
	* sysdeps/unix/sysv/linux/powerpc/bits/stat.h: New.
	* sysdeps/unix/sysv/linux/powerpc/kernel_stat.h (_HAVE_STAT*): Define.
	* sysdeps/unix/sysv/linux/powerpc/scandir64.c: New.
	* sysdeps/unix/sysv/linux/powerpc/getdents64.c: New.
	* sysdeps/unix/sysv/linux/powerpc/readdir64.c: New.
	* sysdeps/unix/sysv/linux/powerpc/readdir64_r.c: New.
	* sysdeps/unix/sysv/linux/sparc/bits/types.h (__ino64_t): Change to
	__u_quad_t.
	* sysdeps/unix/sysv/linux/sparc/bits/stat.h: New.
	* sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h (_HAVE_STAT*):
	Define.
	* sysdeps/unix/sysv/linux/sparc/sparc32/getdents64.c: New.
	* sysdeps/unix/sysv/linux/sparc/sparc32/readdir64.c: New.
	* sysdeps/unix/sysv/linux/sparc/sparc32/readdir64_r.c: New.
	* sysdeps/unix/sysv/linux/sparc/sparc32/scandir64.c: New.
	* sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h (_HAVE_STAT*):
	Define.
	* sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: Include
	alpha/readdir.c.
	* sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: Include
	alpha/readdir_r.c
	* sysdeps/unix/sysv/linux/sparc/sparc64/getdents.c: New.
	* sysdeps/unix/sysv/linux/sparc/sparc64/getdents64.c: New.
	* sysdeps/unix/sysv/linux/fxstat64.c (__fxstat64): If
	_HAVE_STAT64___ST_INO and __st_ino != (uint32_t)st_ino, set
	st_ino from __st_ino.
	* sysdeps/unix/sysv/linux/lxstat64.c (__lxstat64): Likewise.
	* sysdeps/unix/sysv/linux/xstat64.c (__xstat64): Likewise.
	* sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv, xstat64_conv,
	xstat32_conv): Use _HAVE_STAT* macros.  If _HAVE_STAT64___ST_INO,
	set __st_ino in addition to st_ino.
	* sysdeps/unix/sysv/linux/kernel_stat.h (_HAVE_STAT*): Define.
	* sysdeps/unix/sysv/linux/getdents.c: Use it for __getdents64 and
	__old_getdents64 as well.
	* sysdeps/unix/sysv/linux/getdirentries.c: Use it for
	getdirentries64 and old_getdirentries64 as well.
	* sysdeps/unix/sysv/linux/getdirentries64.c (GETDIRENTRIES,
	__GETDENTS): Define.
	(GETDENTS64): Remove.
	* sysdeps/unix/sysv/linux/getdents64.c (__GETDENTS, DIRENT_TYPE):
	Define.
	(GETDENTS64): Remove.
	* sysdeps/unix/sysv/linux/readdir64.c: Use sysdeps/unix/readdir.c.
	* sysdeps/unix/sysv/linux/readdir64_r.c: Use sysdeps/unix/readdir_r.c.
	* sysdeps/unix/readdir.c: Use it for readdir64 and __old_readdir64
	as well.
	* sysdeps/unix/readdir_r.c: Use it for readdir64_r and
	__old_readdir64_r as well.
	* sysdeps/unix/sysv/linux/kernel-features.h: Define
	__ASSUME_ST_INO_64_bit for kernel 2.4.1 and up.

	* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Add SI_KERNEL define.
2000-08-12 05:14:52 +00:00