Denys Vlasenko d9560c1080 Set saner MAX_ARGS (6 or 8) for X86_64 and I386
I noticed that tcp->u_args[MAX_ARGS] array is way larger than
I'd expect: for all arches except HPPA it has 32 (!) elements.

I looked at the code and so far I spotted only one abuser of
this fact: sys_sigreturn. On several arches, it saves sigset_t
into tcp->u_args[1...N] on entry and prints it on exit, a-la

memcpy(&tcp->u_arg[1], &sc.oldmask[0], sizeof(sigset_t))

The problem here is that in glibc sigset_t is insanely large:
128 bytes, and using sizeof(sigset_t) in memcpy will overrun
&tcp->u_args[1] even with MAX_ARGS == 32:
On 32 bits, sizeof(tcp->u_args) == 32*4 == 128 bytes!
We may already have a bug there!

This commit changes the code to save NSIG / 8 bytes only.
NSIG can't ever be > 256, and in practice is <= 129,
thus NSIG / 8 is <= 16 bytes == 4 32-bit words,
and even MAX_ARGS == 5 should be enough for saving signal masks.

* defs.h: Reduce MAX_ARGS for X86_64 and I386 from 32 to 8
for FreeBSD and to 6 for everyone else. Add comment about current
state of needed MAX_ARGS.
* signal.c: Add comment about size of sigset_t.
(sprintsigmask): Reduce static string buffer from 8k to 2k.
(sys_sigreturn): Fix sigset saving to save only NSIG / 8 bytes,
not sizeof(sigset_t) bytes.
* linux/mips/syscallent.h: Reduce nargs of printargs-type syscall to 7.
* linux/arm/syscallent.h: Reduce nargs of printargs-type syscall to 6.
* linux/i386/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sh/syscallent.h: Likewise.
* linux/sh64/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2011-08-23 12:53:01 +02:00
2011-03-14 15:39:36 +00:00
2011-02-25 16:53:50 +00:00
2011-08-23 12:53:01 +02:00
2011-03-14 15:32:38 +00:00
2011-06-07 12:13:24 +02:00
2011-08-23 12:53:00 +02:00
2009-07-08 21:01:21 +00:00
2011-08-23 12:53:00 +02:00
2002-03-31 18:43:00 +00:00
2011-06-22 14:32:43 +02:00
2011-03-15 15:46:52 +00:00
2011-06-22 14:32:43 +02:00
2009-09-18 12:07:03 +00:00
2011-06-22 14:32:43 +02:00
2011-06-13 21:58:43 +00:00
2011-06-07 12:13:24 +02:00
2011-08-23 12:53:01 +02:00
2011-06-22 14:32:43 +02:00
2011-03-14 15:39:36 +00:00
1999-02-19 00:21:36 +00:00
2011-06-22 14:32:43 +02:00
2009-02-23 08:07:45 +00:00
2009-07-08 21:01:21 +00:00
1999-02-19 00:21:36 +00:00
2010-07-17 17:46:28 +02:00
2009-09-18 12:07:03 +00:00
2011-06-07 12:13:24 +02:00
2011-08-23 12:53:00 +02:00
2011-03-14 15:39:36 +00:00
2011-06-07 12:13:24 +02:00
2011-08-23 12:53:01 +02:00
2009-09-18 12:07:03 +00:00
2010-02-04 22:40:57 +00:00
2011-06-22 14:32:43 +02:00
2001-07-10 13:48:44 +00:00
1999-02-19 00:21:36 +00:00

This is strace 4.0, a system call tracer for SunOS 4.x, Linux, System
V release 4, Solaris 2.x and Irix 5.x.  strace is released under a
Berkeley-style license at the request of Paul Kranenburg; see the file
COPYRIGHT for details.

Read the INSTALL file for generic instructions on how to install
strace.  If configure cannot guess your system configuration, you can
specify it on the command line after the other options like this:

	./configure --prefix=/usr i486-linux

A single sunos4.1 binary should work on all the sun4, sun4c and sun4m
kernel architectures.  Let me know if sun4d doesn't work.  Other
i486-*-sysv4 systems may work with little or no tweaking.

See the file NEWS for information on what has changed in recent
versions.

See the file PORTING if you like strace but it doesn't work on an
operating system you use frequently.

See the file CREDITS to see who has contributed to strace.

See the file TODO if you feel like helping out.

You can get the latest version of strace from its homepage at
http://sourceforge.net/projects/strace/ .

Please send bug reports and enhancements to the strace
mailinglist at strace-devel@lists.sourceforge.net, or directly to
Wichert Akkerman <wakkerma@debian.org>
Description
No description provided
Readme 17 MiB
Languages
C 92.2%
Shell 3.4%
M4 1.4%
Makefile 0.8%
Roff 0.7%
Other 1.5%