Commit Graph

3928 Commits

Author SHA1 Message Date
Joseph Myers
42c8fdd8f1 Use __getpagesize and __ffs in MMAP2_PAGE_SHIFT == -1 case of mmap64. 2013-08-20 16:43:59 +00:00
Andreas Krebbel
4e39af6eca * sysdeps/unix/sysv/linux/s390/sys/procfs.h (struct elf_prstatus):
Align 32 bit compat elf_greg to 8 bytes.
2013-08-20 14:13:59 +02: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
Adhemerval Zanella
7b1f8b581f PowerPC: use _dl_static_init to set GLRO(gl_pagesize)
This patch fixes dlfcn/tststatic5 for PowerPC where pagesize
variable was not properly initialized in certain cases. This patch
is based on other architecture code.
2013-07-23 07:39:57 -05:00
Carlos O'Donell
e4608715e6 CVE-2013-2207, BZ #15755: Disable pt_chown.
The helper binary pt_chown tricked into granting access to another
user's pseudo-terminal.

Pre-conditions for the attack:

 * Attacker with local user account
 * Kernel with FUSE support
 * "user_allow_other" in /etc/fuse.conf
 * Victim with allocated slave in /dev/pts

Using the setuid installed pt_chown and a weak check on whether a file
descriptor is a tty, an attacker could fake a pty check using FUSE and
trick pt_chown to grant ownership of a pty descriptor that the current
user does not own.  It cannot access /dev/pts/ptmx however.

In most modern distributions pt_chown is not needed because devpts
is enabled by default. The fix for this CVE is to disable building
and using pt_chown by default. We still provide a configure option
to enable hte use of pt_chown but distributions do so at their own
risk.
2013-07-21 15:39:55 -04:00
Carlos O'Donell
d7e06450b9 BZ #15711: Avoid circular dependency for syscall.h
The generated header is compiled with `-ffreestanding' to avoid any
circular dependencies against the installed implementation headers.
Such a dependency would require the implementation header to be
installed before the generated header could be built (See bug 15711).
In current practice the generated header dependencies do not include
any of the implementation headers removed by the use of `-ffreestanding'.

---

2013-07-15  Carlos O'Donell  <carlos@redhat.com>

	[BZ #15711]
	* sysdeps/unix/sysv/linux/Makefile ($(objpfx)bits/syscall%h):
	Avoid system header dependency with -ffreestanding.
	($(objpfx)bits/syscall%d): Likewise.
2013-07-16 17:55:43 -04:00
Andreas Jaeger
521c6785e1 Sync sys/ptrace with Linux 3.10 2013-07-04 09:49:14 +02:00
Ryan S. Arnold
1ae8bfe07c Add GLRO(dl_hwcap2) for new AT_HWCAP2 auxv_t a_type. 2013-06-28 16:50:48 -05:00
Joseph Myers
8fbec01098 Consistently use page_shift in sysdeps/unix/sysv/linux/mmap64.c. 2013-06-28 21:45:11 +00:00
Ryan S. Arnold
2f063a6e84 PowerPC: Enable POWER8 platform sans hwcap bits. 2013-06-24 15:33:32 -05:00
Joseph Myers
d8412221e6 Include <string.h> in sysdeps/unix/sysv/linux/libc_fatal.c. 2013-06-22 19:30:10 +00:00
Siddhesh Poyarekar
61dd6208fb New API to set default thread attributes
This patch introduces two new convenience functions to set the default
thread attributes used for creating threads.  This allows a programmer
to set the default thread attributes just once in a process and then
run pthread_create without additional attributes.
2013-06-15 12:24:15 +05:30
Siddhesh Poyarekar
58206c6863 Improve precision of clock() function on Linux
Resolves #12515.

Use CLOCK_PROCESS_CPUTIME_ID instead of times to get better precision
in the value returned by clock.
2013-06-13 09:54:35 +05:30
Siddhesh Poyarekar
89fb683558 Fix symbol definitions for __clock_* functions
__clock_gettime and other __clock_* functions could result in an extra
PLT reference within libc.so if it actually gets used.  None of the
code currently uses them, which is why this probably went unnoticed.
2013-06-11 11:11:11 +05:30
Joseph Myers
60d2f8f3c7 Use (void) in no-arguments function definitions. 2013-06-08 00:22:23 +00:00
Ondrej Bilka
350635a59a Fix leading whitespaces. 2013-06-06 20:36:07 +02:00
Joseph Myers
9c84384cc1 Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
Edjunior Barbosa Machado
85118d4de3 Update bits/siginfo.h with Linux hwpoison SIGBUS changes
Adds new SIGBUS error codes for hardware poison signals, syncing with
the current kernel headers (v3.9). It also adds si_trapno field for
alpha.
2013-05-22 14:19:49 -05:00
Ryan S. Arnold
e054f49430 Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
Edjunior Machado
12fba011bd Update s390/bits/siginfo.h
2013-05-15  Edjunior Machado  <emachado@linux.vnet.ibm.com>

	* sysdeps/unix/sysv/linux/s390/bits/siginfo.h (siginfo_t):
	Remove si_trapno and add si_addr_lsb to _sifields.sigfault.
	(si_trapno): Remove macro.
	(si_addr_lsb): Define new macro.
	(BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values.
2013-05-15 20:15:19 +02:00
Christian Grönke
7187d844a1 Add getgid.c for SH
[BZ #12387]
	* sysdeps/unix/sysv/linux/sh/getgid.c: New file.
2013-05-10 20:42:24 +02:00
Andreas Jaeger
8a67a4b343 Fix integer overflow in sysdeps/unix/sysv/linux/bits/sched.h
[BZ #15448]
	* sysdeps/unix/sysv/linux/bits/sched.h (__CPU_SET_S)
	(__CPU_CLR_S, __CPU_ISSET_S): Avoid integer overflow.
2013-05-10 20:28:40 +02:00
Roland McGrath
a917305749 Fix glob64 broken by cleanup. 2013-05-06 17:11:12 -07:00
Roland McGrath
9723ffc524 Move dummy glob64.c alongside glob.c that defines glob64. 2013-05-06 16:11:11 -07:00
Roland McGrath
d5e8275481 Split _dl_writev out from _dl_debug_vdprintf. 2013-05-06 11:30:41 -07:00
Roland McGrath
cc0e6ed81f Consolidate definitions of _FORTIFY_SOURCE wrappers for open{,64}{,at}. 2013-05-03 16:33:26 -07:00
Adhemerval Zanella
83e7640f6b PowerPC: Add time vDSO support
PowerPC kernel now provides a vDSO implementation for time syscall
(commit fcb41a2030abe0eb716ef0798035ef9562097f42). This patch changes
time syscall wrapper to use the vDSO when available. It also changes
the default non vDSO time on PowerPC to use sysdeps/posix/time.c
(since gettimeofday is a vDSO call).
2013-05-03 15:04:54 -05:00
Andreas Jaeger
164fd39d05 Sync with Linux 3.9
* sysdeps/gnu/netinet/tcp.h (TCP_TIMESTAMP): New value, from
	Linux 3.9.
	* sysdeps/unix/sysv/linux/bits/socket.h (PF_VSOCK, AF_VSOCK):
	Add.
	(PF_MAX): Adjust for VSOCK change.
2013-05-03 20:52:00 +02:00
Heiko Carstens
5c95f7b66b S/390: Change struct statfs[64] member types to unsigned values
Kay Sievers reported that coreutils' stat tool has a problem with
s390's statfs[64] definition:

> The definition of struct statfs::f_type needs a fix. s390 is the only
> architecture in the kernel that uses an int and expects magic
> constants lager than INT_MAX to fit into.
>
> A fix is needed to make Fedora boot on s390, it currently fails to do
> so. Userspace does not want to add code to paper-over this issue.

[...]

> Even coreutils cannot handle it:
>   #define RAMFS_MAGIC  0x858458f6
>   # stat -f -c%t /
>   ffffffff858458f6
>
>   #define BTRFS_SUPER_MAGIC 0x9123683E
>   # stat -f -c%t /mnt
>   ffffffff9123683e

The bug is caused by an implicit sign extension within the stat tool:

out_uint_x (pformat, prefix_len, statfsbuf->f_type);

where the format finally will be "%lx".
A similar problem can be found in the 'tail' tool.
s390 is the only architecture which has an int type f_type member in
struct statfs[64]. Other architectures have either unsigned ints or
long values, so that the problem doesn't occur there.

Therefore change the type of the f_type member to unsigned int, so
that we get zero extension instead sign extension when assignment to
a long value happens.

Reported-by: Kay Sievers <kay@vrfy.org>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
2013-04-23 08:59:35 +02:00
Adam Conrad
ccdad15df5 Remove __wur from setfsuid and setfsgid. 2013-04-18 23:58:16 -06:00
Siddhesh Poyarekar
d755bba40f Preserve errno across _PC_CHOWN_RESTRICTED call on XFS
Fix BZ #15305.

On kernel versions earlier than 2.6.29, the Linux kernel exported a
sysctl called restrict_chown for xfs, which could be used to allow
chown to users other than the owner.  2.6.29 removed this support,
causing the open_not_cancel_2 to fail and thus modify errno.  The fix
is to save and restore errno so that the caller sees it as unmodified.

Additionally, since the code to check the sysctl is not useful on
newer kernels, we add an ifdef so that in future the code block gets
rmeoved completely.
2013-04-03 10:56:45 +05:30
Thomas Schwinge
572676160d New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
It is based on draft TS 18661 and currently enabled as a GNU extension.
2013-04-02 13:51:02 +02:00
Roland McGrath
a600e5cef5 Consolidate Linux and POSIX libc_fatal code. 2013-03-19 17:07:15 -07:00
Roland McGrath
bc16e260d0 Move _dl_non_dynamic_init, _dl_aux_init declarations. 2013-03-15 14:32:04 -07:00
Adhemerval Zanella
ef26eece63 PowerPC: gettimeofday optimization by using IFUNC 2013-03-15 10:58:56 -03:00
Siddhesh Poyarekar
e25cfa6005 Fix formatting in last change 2013-03-14 08:18:48 +05:30
Petr Baudis
58a1335e76 Fix __times() handling of EFAULT when buf is NULL 2013-03-14 01:16:53 +01:00
Andreas Schwab
fb6b0fcbf1 Remove extra pthread_atfork compat symbols 2013-03-11 09:47:01 +01:00
Adhemerval Zanella
edf66e57fc PowerPC: unify math_ldbl.h implementations
This patch removes redudant definition from PowerPC specific
math_ldbl, using the definitions from ieee754 math_ldbl.h.
2013-03-08 11:07:15 -03:00
Andreas Jaeger
4dd4e15794 Install <bits/mman-linux.h>
* sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add
	bits/mman-linux.h.
2013-03-07 13:06:20 +01:00
Siddhesh Poyarekar
adbb8027be Remove PIPE_BUF Linux-specific code
Fixes BZ #12723

The variable pipe buffer size does nothing to the value of PIPE_BUF,
since the number of bytes that are atomically written is still
PIPE_BUF on Linux.
2013-03-07 12:15:08 +05:30
Andreas Jaeger
664a9ce4ca Use <bits/mman-linux.h> for MIPS
* sysdeps/unix/sysv/linux/bits/mman-linux.h (MAP_ANONYMOUS):
	Allow definition via __MAP_ANONYMOUS.

	* sysdeps/unix/sysv/linux/mips/bits/mman.h: Remove all defines
	provided by bits/mman-linux.h and include <bits/mman-linux.h>.
	(__MAP_ANONYMOUS): Define.
2013-03-06 17:36:37 +01:00
Andreas Jaeger
8e39047d31 Remove MAP_GROWSUP on s390
* sysdeps/unix/sysv/linux/s390/bits/mman.h (MAP_GROWSUP):
	Remove, it's not part of Linux headers.
2013-03-06 16:39:56 +01:00
Andreas Jaeger
67525cb832 Sync with Linux 3.8 2013-03-06 16:35:19 +01:00
Joseph Myers
2d67d91ac0 Remove powerpc64 bounded-pointers code. 2013-03-06 00:10:21 +00:00
Andreas Jaeger
890b58d3bd Define MCL_CURRENT, MCL_FUTURE in bits/mman-linux.h
* sysdeps/unix/sysv/linux/s390/bits/mman.h: Include
	<bits/mman-linux.h>.
	(MCL_CURRENT, MCL_FUTURE): Do not define here, the generic value
	is fine.
	* sysdeps/unix/sysv/linux/sh/bits/mman.h: Move include of
	<bits/mman-linux.h> to end of file.
	(MCL_CURRENT, MCL_FUTURE): Do not define here, the generic value
	is fine.
	* sysdeps/unix/sysv/linux/x86/bits/mman.h: Move include of
	<bits/mman-linux.h> to end of file.
	(MCL_CURRENT, MCL_FUTURE): Do not define here, the generic value
	is fine.
	* sysdeps/unix/sysv/linux/sparc/bits/mman.h: Move include of
	<bits/mman-linux.h> to end of file.

	* sysdeps/unix/sysv/linux/bits/mman-linux.h [!MCL_CURRENT]
	(MCL_CURRENT, MCL_FUTURE): Define here.
2013-03-05 19:40:13 +01:00
Andreas Krebbel
c3e94a9533 S/390: Fix rt_sigprocmask syscall invocation in get/set/swapcontext. 2013-03-05 08:15:33 +01:00
Andreas Jaeger
539d8e0188 Create <bits/mman-linux.h>
* sysdeps/unix/sysv/linux/bits/mman-linux.h: New file, with
	Linux common definitions.

	* sysdeps/unix/sysv/linux/sh/bits/mman.h: Remove all defines
	provided by bits/mman-linux.h and include <bits/mman-linux.h>.
	* sysdeps/unix/sysv/linux/x86/bits/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/sh/bits/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise.
2013-03-04 20:26:59 +01:00
Roland McGrath
7775448e57 Fix NEED_DL_SYSINFO_DSO conditionals. 2013-03-01 14:44:44 -08:00
Joseph Myers
b551088322 Remove powerpc32 bounded-pointers code. 2013-02-28 21:23:47 +00:00