]> granicus.if.org Git - strace/log
strace
8 years agoFix printing of invalid arguments of prctl syscall
Dmitry V. Levin [Mon, 16 May 2016 23:22:11 +0000 (23:22 +0000)]
Fix printing of invalid arguments of prctl syscall

* prctl.c (SYS_FUNC(prctl)): Print 2nd syscall argument
of PR_CAPBSET_DROP, PR_CAPBSET_READ, PR_CAP_AMBIENT, PR_MCE_KILL,
and PR_SET_SECCOMP using printxval_long.
Print 2nd syscall argument of PR_SET_SECUREBITS using printflags_long.
Print 3rd syscall argument of PR_CAP_AMBIENT and PR_MCE_KILL using
printxval_long.
* tests/prctl-seccomp-strict.c (main): Update.

8 years agoFix printing of invalid flags argument of perf_event_open syscall
Dmitry V. Levin [Mon, 16 May 2016 23:19:23 +0000 (23:19 +0000)]
Fix printing of invalid flags argument of perf_event_open syscall

* numa.c (SYS_FUNC(perf_event_open)): Print 5th argument of syscall
using printflags_long.

8 years agoor1k: fix printing of invalid 1st argument of or1k_atomic syscall
Dmitry V. Levin [Mon, 16 May 2016 23:17:19 +0000 (23:17 +0000)]
or1k: fix printing of invalid 1st argument of or1k_atomic syscall

* or1k_atomic.c (SYS_FUNC(or1k_atomic)): Print 1st argument using
printxval_long.

8 years agoFix printing of invalid flags argument of get_mempolicy syscall
Dmitry V. Levin [Mon, 16 May 2016 23:15:06 +0000 (23:15 +0000)]
Fix printing of invalid flags argument of get_mempolicy syscall

* numa.c (SYS_FUNC(get_mempolicy)): Print 5th argument of syscall
using printxval_long.

8 years agoFix printing of invalid mode argument of mbind syscall
Dmitry V. Levin [Mon, 16 May 2016 23:13:04 +0000 (23:13 +0000)]
Fix printing of invalid mode argument of mbind syscall

* numa.c (SYS_FUNC(mbind)): Print 3rd argument of syscall
using printxval_long.
* tests/mbind.c (main): Update.

8 years agoFix printing of invalid argument of MTDFILEMODE ioctl
Dmitry V. Levin [Mon, 16 May 2016 23:06:17 +0000 (23:06 +0000)]
Fix printing of invalid argument of MTDFILEMODE ioctl

* mtd.c (mtd_ioctl): Print 3rd argument of MTDFILEMODE ioctl
using printflags_long.

8 years agoFix printing of invalid flags argument of mount syscall
Dmitry V. Levin [Mon, 16 May 2016 23:04:54 +0000 (23:04 +0000)]
Fix printing of invalid flags argument of mount syscall

* mount.c (SYS_FUNC(mount)): Print 1st argument using printflags_long.

8 years agoFix printing of invalid arguments of memory mapping related syscalls
Dmitry V. Levin [Mon, 16 May 2016 22:58:45 +0000 (22:58 +0000)]
Fix printing of invalid arguments of memory mapping related syscalls

* mem.c (print_mmap): Print 3rd and 4th arguments of syscall
using printflags_long.
(SYS_FUNC(mprotect)): Print 3rd argument of syscall using
printflags_long.
(SYS_FUNC(mremap)): Print 4th argument of syscall using printflags_long.
(SYS_FUNC(remap_file_pages)): Print 3rd and 4th arguments of syscall
using printflags_long.
* tests/remap_file_pages.c (main): Update.

8 years agoFix printing of invalid flags argument of kexec_load and kexec_file_load
Dmitry V. Levin [Mon, 16 May 2016 22:54:41 +0000 (22:54 +0000)]
Fix printing of invalid flags argument of kexec_load and kexec_file_load

* kexec.c (SYS_FUNC(kexec_load), SYS_FUNC(kexec_file_load)): Print
flags argument using printflags_long.

8 years agoFix printing of invalid 3rd argument of fcntl/fcntl64 syscall
Dmitry V. Levin [Mon, 16 May 2016 22:52:04 +0000 (22:52 +0000)]
Fix printing of invalid 3rd argument of fcntl/fcntl64 syscall

* fcntl.c (print_fcntl): Print 3rd argument of F_NOTIFY, F_SETLEASE, and
F_ADD_SEALS operations using printflags_long.

8 years agoFix printing of invalid flags argument of unshare syscall
Dmitry V. Levin [Mon, 16 May 2016 22:49:54 +0000 (22:49 +0000)]
Fix printing of invalid flags argument of unshare syscall

* clone.c (SYS_FUNC(unshare)): Print 1st argument using printflags_long.

8 years agoIntroduce printflags_long and printxval_long
Dmitry V. Levin [Mon, 16 May 2016 22:44:50 +0000 (22:44 +0000)]
Introduce printflags_long and printxval_long

* defs.h (printflags_long, printxval_long): New static inline functions.

8 years agoFix printing of invalid struct xfs_dqblk.d_flags
Dmitry V. Levin [Mon, 16 May 2016 22:28:31 +0000 (22:28 +0000)]
Fix printing of invalid struct xfs_dqblk.d_flags

* quota.c (decode_cmd_data): Explicitly cast struct xfs_dqblk.d_flags
to uint8_t to avoid potential sign-extension bug when printing
invalid struct xfs_dqblk.d_flags.

8 years agoFix printing of invalid struct ubi_mkvol_req.vol_type
Dmitry V. Levin [Mon, 16 May 2016 22:25:46 +0000 (22:25 +0000)]
Fix printing of invalid struct ubi_mkvol_req.vol_type

* mtd.c (ubi_ioctl): Explicitly cast struct ubi_mkvol_req.vol_type
to unsigned short to avoid potential sign-extension bug when printing
invalid struct ubi_mkvol_req.vol_type.

8 years agoFix decoding of prctl/arch_prctl operation argument
Dmitry V. Levin [Mon, 16 May 2016 22:19:31 +0000 (22:19 +0000)]
Fix decoding of prctl/arch_prctl operation argument

Consistently treat operation argument of prctl/arch_prctl syscalls
as int to match the kernel behaviour.

* prctl.c (SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): Assign 1st argument
of syscalls to a variable of type unsigned int and use it in all
subsequent checks and lookups.

8 years agoFix printing of struct sched_attr.sched_flags
Dmitry V. Levin [Mon, 16 May 2016 22:16:17 +0000 (22:16 +0000)]
Fix printing of struct sched_attr.sched_flags

* sched.c (print_sched_attr): Print sched_flags using printflags64.

8 years agoFix printing of struct statfs.f_flags
Dmitry V. Levin [Mon, 16 May 2016 22:09:44 +0000 (22:09 +0000)]
Fix printing of struct statfs.f_flags

* print_statfs.c (print_statfs_flags): Print flags using printflags64.

8 years agoFix printing of invalid struct ifreq.ifr_flags
Dmitry V. Levin [Mon, 16 May 2016 22:05:06 +0000 (22:05 +0000)]
Fix printing of invalid struct ifreq.ifr_flags

* sock.c (print_ifreq): Explicitly cast struct ifreq.ifr_flags
to unsigned short to avoid potential sign-extension bug when printing
invalid struct ifreq.ifr_flags.

8 years agoFix printing of invalid struct pollfd.events
Dmitry V. Levin [Mon, 16 May 2016 22:03:51 +0000 (22:03 +0000)]
Fix printing of invalid struct pollfd.events

* poll.c (print_pollfd): Explicitly cast struct pollfd.events
to unsigned short to avoid potential sign-extension bug when printing
invalid struct pollfd.events.

8 years agoFix printing of invalid struct sembuf.sem_flg
Dmitry V. Levin [Mon, 16 May 2016 22:00:46 +0000 (22:00 +0000)]
Fix printing of invalid struct sembuf.sem_flg

* ipc_sem.c (print_sembuf): Explicitly cast struct sembuf.sem_flg
to unsigned short to avoid potential sign-extension bug when printing
invalid struct sembuf.sem_flg.

8 years agoFix printing of invalid l_type and l_whence in fcntl/fcntl64 syscalls
Dmitry V. Levin [Mon, 16 May 2016 21:57:08 +0000 (21:57 +0000)]
Fix printing of invalid l_type and l_whence in fcntl/fcntl64 syscalls

* fcntl.c (print_struct_flock64): Explicitly cast l_type and l_whence
fields to unsigned short to avoid potential sign-extension bug when
printing invalid l_type or l_whence fields.

8 years agoFix printing of fanotify_mark mask argument
Dmitry V. Levin [Mon, 16 May 2016 21:54:03 +0000 (21:54 +0000)]
Fix printing of fanotify_mark mask argument

* fanotify.c (SYS_FUNC(fanotify_mark)): Print mask using printflags64.

8 years agoFix decoding of epoll_ctl operation argument
Dmitry V. Levin [Mon, 16 May 2016 21:43:35 +0000 (21:43 +0000)]
Fix decoding of epoll_ctl operation argument

Consistently treat operation argument of epoll_ctl syscall as int
to match the kernel behaviour.

* epoll.c (SYS_FUNC(epoll_ctl)): Assign 2nd argument of syscall
to a variable of type unsigned int and use it in all subsequent
checks and lookups.
* tests/epoll_ctl.c (invoke_syscall): New function.
(main): Use it.

8 years agoFix printing of invalid d_type in getdents syscall
Dmitry V. Levin [Mon, 16 May 2016 21:35:07 +0000 (21:35 +0000)]
Fix printing of invalid d_type in getdents syscall

* dirent.c (SYS_FUNC(getdents)): Treat d_type as unsigned char to avoid
potential sign-extension bug when printing invalid d_type.

8 years agobfin: fix decoding of cacheflush syscall
Dmitry V. Levin [Mon, 16 May 2016 21:31:54 +0000 (21:31 +0000)]
bfin: fix decoding of cacheflush syscall

* cacheflush.c (SYS_FUNC(cacheflush)): Print 2nd argument
using %lu format.  Print 3rd argument as flags.

8 years agoFix decoding of BPF_MAP_UPDATE_ELEM flags
Dmitry V. Levin [Mon, 16 May 2016 21:27:30 +0000 (21:27 +0000)]
Fix decoding of BPF_MAP_UPDATE_ELEM flags

* bpf.c (bpf_map_update_elem): Print attr.flags using printxval64.

8 years agoFix decoding of fcntl/fcntl64 operation argument
Dmitry V. Levin [Mon, 16 May 2016 21:01:43 +0000 (21:01 +0000)]
Fix decoding of fcntl/fcntl64 operation argument

Consistently treat operation argument of fcntl/fcntl64 syscalls as int
to match the kernel behaviour.

* fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Assign
2nd argument of syscall to a variable of type unsigned int
and use it in all subsequent checks and lookups.
* tests/struct_flock.c (invoke_test_syscall): New function.
(test_flock_einval, test_flock): Use it.
* tests/fcntl.c (test_flock64_einval): Use it.
* tests/fcntl64.c (test_flock64_einval, test_flock64): Use it.

8 years agoRename sprintflags64 to sprintflags.
Dmitry V. Levin [Sun, 15 May 2016 14:26:03 +0000 (14:26 +0000)]
Rename sprintflags64 to sprintflags.

* defs.h (sprintflags): Remove.
(sprintflags64): Rename to sprintflags.
* util.c (sprintflags64): Rename to sprintflags.

8 years agoPrepare for transition from sprintflags64 to sprintflags
Dmitry V. Levin [Sun, 15 May 2016 14:23:06 +0000 (14:23 +0000)]
Prepare for transition from sprintflags64 to sprintflags

* fcntl.c (print_fcntl): Cast 3rd argument of sprintflags
to unsigned long.
* membarrier.c (SYS_FUNC(membarrier)): Likewise.
* prctl.c (SYS_FUNC(prctl)): Likewise.
* poll.c (decode_poll_exiting): Cast 3rd argument of sprintflags
to unsigned short.

8 years agoRename xlookup64 to xlookup
Dmitry V. Levin [Sat, 14 May 2016 21:55:35 +0000 (21:55 +0000)]
Rename xlookup64 to xlookup

* defs.h (xlookup): Remove.
(xlookup64): Rename to xlookup.
* util.c (xlookup64): Rename to xlookup.

8 years agoPrepare for transition from xlookup64 to xlookup
Dmitry V. Levin [Sat, 14 May 2016 21:46:05 +0000 (21:46 +0000)]
Prepare for transition from xlookup64 to xlookup

* fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)):
Cast 2nd argument of xlookup to unsigned long.
* prctl.c (SYS_FUNC(prctl)): Likewise.
* sched.c (SYS_FUNC(sched_getscheduler)): Likewise.
* time.c (do_adjtimex): Likewise.
* ioprio.c (sprint_ioprio): Change type of the argument
and local variables from int to unsigned int.
* keyctl.c (print_keyring_serial_number): Cast 2nd argument
of xlookup to unsigned int.
* net.c (tprint_sock_type): Change type of the argument to unsigned int.
* printmode.c (sprintmode): Likewise.
* printsiginfo.c (printsigval):  Change type of si_code argument
to unsigned int.

8 years agov4l2: fix build with old kernel headers
Dmitry V. Levin [Sat, 14 May 2016 00:36:27 +0000 (00:36 +0000)]
v4l2: fix build with old kernel headers

Prior to v2.6.25-rc3, <linux/videodev2.h> didn't include all
required headers, resulting to omission of V4L2_* constants.

This issue doesn't arise in v4l2.c and tests/ioctl_v4l2.c files
because they already include all necessary headers themselves.

* configure.ac (AC_CHECK_DECLS): Include <sys/time.h>, <linux/ioctl.h>,
and <linux/types.h> before <linux/videodev2.h>.

8 years agoconfigure.ac: do not check for sys/ioctl.h and ioctls.h
Dmitry V. Levin [Fri, 13 May 2016 20:26:11 +0000 (20:26 +0000)]
configure.ac: do not check for sys/ioctl.h and ioctls.h

Since sys/ioctl.h is included unconditionally when needed
and ioctls.h doesn't exist, these checks are redundant.

* configure.ac (AC_CHECK_HEADERS): Remove ioctls.h and sys/ioctl.h.

8 years agosock.c: include <linux/ioctl.h> instead of <sys/ioctl.h> or <ioctls.h>
Dmitry V. Levin [Fri, 13 May 2016 20:22:18 +0000 (20:22 +0000)]
sock.c: include <linux/ioctl.h> instead of <sys/ioctl.h> or <ioctls.h>

Include <linux/ioctl.h> for <linux/sockios.h> on alpha, sh, and sh64
architectures because their <asm/sockios.h> use _IOR and _IOW macros
but don't include anything that would define these macros.

Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings
no benefits in this case.  <ioctls.h> simply doesn't exist.

* sock.c [ALPHA || SH || SH64]: Include <linux/ioctl.h>
instead of <sys/ioctl.h> or <ioctls.h>.

8 years agov4l2: include <linux/ioctl.h> instead of <sys/ioctl.h>
Dmitry V. Levin [Fri, 13 May 2016 20:15:12 +0000 (20:15 +0000)]
v4l2: include <linux/ioctl.h> instead of <sys/ioctl.h>

Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings
no benefits for parser of VIDIOC_* ioctls.

* v4l2.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>.

8 years agoprintsiginfo: remove "verbose" argument
Dmitry V. Levin [Fri, 13 May 2016 14:16:12 +0000 (14:16 +0000)]
printsiginfo: remove "verbose" argument

Remove erroneous use of verbose(tcp) as a printing limit
for already fetched members of siginfo_t structure.

* printsiginfo.h (printsiginfo): Remove boolean argument.
* printsiginfo.c (printsigval): Remove boolean argument, print
si_int and si_ptr members unconditionally.  All callers changed.
(print_si_info): Remove boolean argument, print si_utime and si_stime
members unconditionally.  All callers changed.
(printsiginfo): Remove boolean argument.  All callers changed.

8 years agotests/ptrace.c: tweak magic constants to make the test more reliable
Dmitry V. Levin [Fri, 13 May 2016 09:37:10 +0000 (09:37 +0000)]
tests/ptrace.c: tweak magic constants to make the test more reliable

* tests/ptrace.c (main): Change bad_request and bad_data to make they
lower 32-bit parts closer to -1U.

8 years agotests/ioctl_v4l2.c: fix build on older systems
Dmitry V. Levin [Fri, 13 May 2016 04:04:08 +0000 (04:04 +0000)]
tests/ioctl_v4l2.c: fix build on older systems

Fix build on systems without HAVE_DECL_V4L2_CTRL_TYPE_STRING or
V4L2_CTRL_CLASS_CAMERA.

* tests/ioctl_v4l2.c (main) [VIDIOC_S_EXT_CTRLS]: Disable part of the
test if [!HAVE_DECL_V4L2_CTRL_TYPE_STRING].
Replace V4L2_CTRL_CLASS_CAMERA with V4L2_CTRL_CLASS_USER.

8 years agoDo not use htole32 function
Dmitry V. Levin [Fri, 13 May 2016 03:51:43 +0000 (03:51 +0000)]
Do not use htole32 function

htole32 function is not portable enough.

* v4l2.c (print_pixelformat): Rewrite initialization of pixel format
union without using of htole32.
* tests/ioctl_v4l2.c (main): Likewise.

8 years agotests/ioctl_v4l2.c: fix typo
Dmitry V. Levin [Fri, 13 May 2016 03:20:58 +0000 (03:20 +0000)]
tests/ioctl_v4l2.c: fix typo

* tests/ioctl_v4l2.c (main)
[!HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE]: Fix typo in expected
output string.

8 years agotests: check decoding of ptrace syscall
Dmitry V. Levin [Thu, 12 May 2016 16:59:59 +0000 (16:59 +0000)]
tests: check decoding of ptrace syscall

* tests/ptrace.c: New file.
* tests/ptrace.test: New test.
* tests/.gitignore: Add ptrace.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ptrace.

8 years agoptrace: decode data argument of PTRACE_PEEKSIGINFO request
Dmitry V. Levin [Fri, 13 May 2016 02:33:33 +0000 (02:33 +0000)]
ptrace: decode data argument of PTRACE_PEEKSIGINFO request

The data argument of PTRACE_PEEKSIGINFO request is a pointer
to siginfo_t array.

* printsiginfo.c (print_siginfo_t): New function.
(print_siginfo_array): New mpers printer.
* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_PEEKSIGINFO request using print_siginfo_array.

8 years agoptrace: decode data argument of PTRACE_SECCOMP_GET_FILTER request
Dmitry V. Levin [Thu, 12 May 2016 16:58:38 +0000 (16:58 +0000)]
ptrace: decode data argument of PTRACE_SECCOMP_GET_FILTER request

* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_SECCOMP_GET_FILTER request on exiting using print_seccomp_fprog.

8 years agoptrace: decode argument of PTRACE_GETEVENTMSG request
Dmitry V. Levin [Thu, 12 May 2016 16:56:30 +0000 (16:56 +0000)]
ptrace: decode argument of PTRACE_GETEVENTMSG request

* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_GETEVENTMSG request on exiting using printnum_ulong.

8 years agoptrace: decode arguments of PTRACE_[GS]ETSIGMASK requests
Dmitry V. Levin [Thu, 12 May 2016 16:52:49 +0000 (16:52 +0000)]
ptrace: decode arguments of PTRACE_[GS]ETSIGMASK requests

* process.c (SYS_FUNC(ptrace)): Print arguments of PTRACE_GETSIGMASK
and PTRACE_SETSIGMASK requests using print_sigset_addr_len.

8 years agoptrace: return RVAL_DECODED for requests decoded on entering
Dmitry V. Levin [Thu, 12 May 2016 16:49:34 +0000 (16:49 +0000)]
ptrace: return RVAL_DECODED for requests decoded on entering

* process.c (SYS_FUNC(ptrace)): Return RVAL_DECODED on entering for all
ptrace requests except those that are partially decoded in exiting,

8 years agoptrace: print PTRACE_O_* flags using printflags64
Dmitry V. Levin [Thu, 12 May 2016 16:35:54 +0000 (16:35 +0000)]
ptrace: print PTRACE_O_* flags using printflags64

As flags argument has a long integer type, print it using printflags64
because printflags takes unsigned int argument.

* process.c (SYS_FUNC(ptrace)): Print PTRACE_O_* flags
using printflags64.

8 years agoptrace: print data argument of PTRACE_SEIZE et al requests as flags
Dmitry V. Levin [Thu, 12 May 2016 15:53:28 +0000 (15:53 +0000)]
ptrace: print data argument of PTRACE_SEIZE et al requests as flags

* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_SEIZE and PTRACE_OLDSETOPTIONS as PTRACE_O_* flags.

8 years agoptrace: print data argument of PTRACE_SINGLEBLOCK et al requests as signo
Dmitry V. Levin [Thu, 12 May 2016 15:50:43 +0000 (15:50 +0000)]
ptrace: print data argument of PTRACE_SINGLEBLOCK et al requests as signo

* process.c (SYS_FUNC(ptrace)): Print data argument of
PTRACE_SINGLEBLOCK, PTRACE_SYSEMU, and PTRACE_SYSEMU_SINGLESTEP requests
as a signal number.

8 years agoptrace: decode addr argument of PTRACE_PEEKSIGINFO request
Dmitry V. Levin [Thu, 12 May 2016 15:45:24 +0000 (15:45 +0000)]
ptrace: decode addr argument of PTRACE_PEEKSIGINFO request

The addr argument of PTRACE_PEEKSIGINFO request is a pointer to
a struct ptrace_peeksiginfo_args.

* process.c: Include "xlat/ptrace_peeksiginfo_flags.h".
(SYS_FUNC(ptrace)): Print addr argument of PTRACE_PEEKSIGINFO request
as a struct ptrace_peeksiginfo_args.
* xlat/ptrace_peeksiginfo_flags.in: New file.

8 years agoptrace: fix printing addr argument of PTRACE_GETSIGMASK et al requests
Dmitry V. Levin [Thu, 12 May 2016 15:38:35 +0000 (15:38 +0000)]
ptrace: fix printing addr argument of PTRACE_GETSIGMASK et al requests

For PTRACE_GETSIGMASK and PTRACE_SETSIGMASK requests, addr argument
contains the size of the buffer pointed to by data argument.
For PTRACE_SECCOMP_GET_FILTER request, addr argument contains
an offset counter.

* process.c (SYS_FUNC(ptrace)): Print addr argument of
PTRACE_GETSIGMASK, PTRACE_SETSIGMASK, and PTRACE_SECCOMP_GET_FILTER
requests using %lu format.

8 years agoptrace: do not print data argument of some requests on sparc
Dmitry V. Levin [Thu, 12 May 2016 15:18:05 +0000 (15:18 +0000)]
ptrace: do not print data argument of some requests on sparc

On sparc, kernel ignores data argument of PTRACE_GETREGS,
PTRACE_SETREGS, PTRACE_GETFPREGS, and PTRACE_SETFPREGS requests.

* process.c (SYS_FUNC(ptrace)) [SPARC || SPARC64]: Return RVAL_DECODED
right after printing addr argument if request is one of PTRACE_GETREGS,
PTRACE_SETREGS, PTRACE_GETFPREGS, or PTRACE_SETFPREGS.

8 years agoptrace: do not print addr and data arguments of PTRACE_ATTACH-like requests
Dmitry V. Levin [Thu, 12 May 2016 15:10:41 +0000 (15:10 +0000)]
ptrace: do not print addr and data arguments of PTRACE_ATTACH-like requests

As kernel ignores addr and data arguments of PTRACE_ATTACH,
PTRACE_INTERRUPT, PTRACE_KILL, and PTRACE_LISTEN request,
we do not print them either.

* process.c (SYS_FUNC(ptrace)): After printing pid argument, return
RVAL_DECODED if request is one of PTRACE_ATTACH, PTRACE_INTERRUPT,
PTRACE_KILL, or PTRACE_LISTEN.

8 years agoptrace: do not print arguments of PTRACE_TRACEME request
Dmitry V. Levin [Thu, 12 May 2016 15:03:58 +0000 (15:03 +0000)]
ptrace: do not print arguments of PTRACE_TRACEME request

As kernel ignores arguments of PTRACE_TRACEME request,
we do not print them either.

* process.c (SYS_FUNC(ptrace)): If request is PTRACE_TRACEME,
return early with RVAL_DECODED.

8 years agoptrace: print request using printxval64
Dmitry V. Levin [Thu, 12 May 2016 14:45:38 +0000 (14:45 +0000)]
ptrace: print request using printxval64

As first argument of ptrace syscall has a long integer type, print
it using printxval64 because printxval takes unsigned int argument.

* process.c (SYS_FUNC(ptrace)): Change type of "request" variable
from "long" to "unsigned long", print it using printxval64 instead
of printxval.

8 years agoDo not sign-extend siginfo_t.si_syscall
Dmitry V. Levin [Thu, 12 May 2016 14:27:49 +0000 (14:27 +0000)]
Do not sign-extend siginfo_t.si_syscall

* printsiginfo.c (print_si_info): Explicitly cast si_syscall member
of siginfo_t that has type "int" to "unsigned int", to avoid sign
extension when passed to syscall_name function.

8 years agoExport print_seccomp_fprog for further use in parser of ptrace syscall
Dmitry V. Levin [Thu, 12 May 2016 14:23:50 +0000 (14:23 +0000)]
Export print_seccomp_fprog for further use in parser of ptrace syscall

* defs.h (print_seccomp_fprog): New prototype.
* seccomp.c (print_seccomp_fprog): Remove "static" keyword.
Move printing of struct seccomp_fprog fields ...
(print_seccomp_filter): ... here.

8 years agotests: add munlockall.test
Fei Jie [Wed, 11 May 2016 07:07:29 +0000 (15:07 +0800)]
tests: add munlockall.test

* tests/munlockall.c: New file.
* tests/munlockall.test: New test.
* tests/.gitignore: Add munlockall.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add munlockall.test.

8 years agotests: add link.test
Fei Jie [Wed, 11 May 2016 07:07:28 +0000 (15:07 +0800)]
tests: add link.test

* tests/link.c: New file.
* tests/link.test: New test.
* tests/.gitignore: Add link.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add link.test.

8 years agotests: check decoding and dumping of preadv2 and pwritev2 syscalls
Dmitry V. Levin [Wed, 11 May 2016 01:34:09 +0000 (01:34 +0000)]
tests: check decoding and dumping of preadv2 and pwritev2 syscalls

* tests/preadv2-pwritev2.c: New file.
* tests/preadv2-pwritev2.test: New test.
* tests/.gitignore: Add preadv2-pwritev2.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add preadv2-pwritev2.

8 years agoImplement decoding of preadv2 and pwritev2 syscalls
Dmitry V. Levin [Wed, 11 May 2016 00:42:10 +0000 (00:42 +0000)]
Implement decoding of preadv2 and pwritev2 syscalls

* io.c: Include "xlat/rwf_flags.h".
(do_preadv, do_pwritev, SYS_FUNC(preadv2), SYS_FUNC(pwritev2)):
New functions.
(SYS_FUNC(preadv)): Use do_preadv.
(SYS_FUNC(pwritev)): Use do_pwritev.
* linux/32/syscallent.h (preadv2, pwritev2): New entries.
* linux/64/syscallent.h: Likewise.
* linux/arm/syscallent.h: Likewise.
* linux/hppa/syscallent.h: Likewise.
* linux/i386/syscallent.h: Likewise.
* linux/ia64/syscallent.h: Likewise.
* linux/m68k/syscallent.h: Likewise.
* linux/mips/syscallent-n32.h: Likewise.
* linux/mips/syscallent-n64.h: Likewise.
* linux/mips/syscallent-o32.h: Likewise.
* linux/powerpc/syscallent.h: Likewise.
* linux/powerpc64/syscallent.h: Likewise.
* linux/s390/syscallent.h: Likewise.
* linux/s390x/syscallent.h: Likewise.
* linux/sparc/syscallent.h: Likewise.
* linux/sparc64/syscallent.h: Likewise.
* linux/x32/syscallent.h: Likewise.
* linux/x86_64/syscallent.h: Likewise.
* syscall.c (dumpio): Handle SEN_preadv2 and SEN_pwritev2.
* xlat/rwf_flags.in: New file.
* NEWS: Mention parsers of new syscalls.

8 years agotests: extend test coverage of xattr family syscalls
Dmitry V. Levin [Tue, 10 May 2016 18:18:32 +0000 (18:18 +0000)]
tests: extend test coverage of xattr family syscalls

* tests/xattr.c: Check decoding of all xattr family syscalls.
* tests/xattr.test: Use run_strace_match_diff.
* tests/xattr.expected: Remove.
* tests/Makefile.am (EXTRA_DIST): Remove it.

8 years agotests: add print_quoted_memory function to libtests
Dmitry V. Levin [Tue, 10 May 2016 22:05:53 +0000 (22:05 +0000)]
tests: add print_quoted_memory function to libtests

* tests/print_quoted_string.c (print_quoted_memory): New function.
(print_quoted_string): Use it.
* tests/tests.h (print_quoted_memory): New prototype.

8 years agoFix corner cases of xattr family syscalls decoding
Dmitry V. Levin [Tue, 10 May 2016 18:52:06 +0000 (18:52 +0000)]
Fix corner cases of xattr family syscalls decoding

* xattr.c (print_xattr_val): Do not take insize into account, print it
as unsigned long.
Do not decode xattr values of size larger than XATTR_SIZE_MAX.
Use static buffer for fetching xattr values.
(print_xattr_list): Do not decode string when size is zero.

8 years agouserfaultfd: Add ioctl tests
Dr. David Alan Gilbert [Tue, 10 May 2016 10:49:03 +0000 (11:49 +0100)]
userfaultfd: Add ioctl tests

* tests/ioctl_uffdio.c: New file.
* tests/ioctl_uffdio.test: New test.
* tests/.gitignore: Add ioctl_uffdio.
* tests/Makefile.am (check_PROGRAMS):  Likewise.
(DECODER_TESTS): Add ioctl_uffdio.test.

8 years agoDecode UFFDIO_* ioctls
Dr. David Alan Gilbert [Tue, 10 May 2016 10:49:02 +0000 (11:49 +0100)]
Decode UFFDIO_* ioctls

Decode the ioctls associated with the userfaultfd fd.
Note that they tend to read from and also return result in it's data
structure.

* configure.ac (AC_CHECK_HEADERS): Add linux/userfaultfd.h.
* userfaultfd.c [HAVE_LINUX_USERFAULTFD_H]: Add ioctl decoder.
* defs.h (uffdio_ioctl): New prototype.
* ioctl.c (ioctl_decode) [HAVE_LINUX_USERFAULTFD_H]: Wire in
uffdio_ioctl.
* xlat/uffd_*.in: Create flag xlat for all the IOCTLs.

8 years agoUpdate AX_CODE_COVERAGE
Dmitry V. Levin [Tue, 10 May 2016 02:08:56 +0000 (02:08 +0000)]
Update AX_CODE_COVERAGE

* m4/ax_code_coverage.m4: Update to serial 16.
* Makefile.am (CODE_COVERAGE_LCOV_OPTIONS): Remove.
(CODE_COVERAGE_GENHTML_OPTIONS): Update, add prefix.
(CODE_COVERAGE_BRANCH_COVERAGE): Set to 1.

8 years agostrace-ff.test: fix race condition
Dmitry V. Levin [Tue, 10 May 2016 09:29:11 +0000 (09:29 +0000)]
strace-ff.test: fix race condition

* tests/strace-ff.test: Wait for completion of PR_SET_PTRACER command.

8 years agotests/epoll_pwait.c: fix for x32
Dmitry V. Levin [Tue, 10 May 2016 01:10:51 +0000 (01:10 +0000)]
tests/epoll_pwait.c: fix for x32

* tests/epoll_pwait.c (main): Explicitly cast last syscall argument
to kernel_ulong_t.

8 years agostrace-S.test: check "-S name"
Dmitry V. Levin [Tue, 10 May 2016 00:03:59 +0000 (00:03 +0000)]
strace-S.test: check "-S name"

* tests/strace-S.test: Add a check for "-c -S name" output.

8 years agoFix NULL dereference in "-S name" when syscall table has holes
Dmitry V. Levin [Tue, 10 May 2016 00:16:20 +0000 (00:16 +0000)]
Fix NULL dereference in "-S name" when syscall table has holes

* count.c (syscall_cmp): Do not pass NULL to strcmp.

8 years agostrace-S.test: cleanup
Dmitry V. Levin [Mon, 9 May 2016 23:42:28 +0000 (23:42 +0000)]
strace-S.test: cleanup

* tests/strace-S.test: Rewrite using sed.

8 years agotests: add strace-S.test
Fei Jie [Thu, 5 May 2016 07:19:51 +0000 (15:19 +0800)]
tests: add strace-S.test

* tests/strace-S.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.

8 years agostrace-ff.test: check that -ff does not create unexpected output files
Dmitry V. Levin [Mon, 9 May 2016 23:15:52 +0000 (23:15 +0000)]
strace-ff.test: check that -ff does not create unexpected output files

* tests/strace-ff.expected: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/strace-ff.test: Use it.  Check that no other output files
have been created.

8 years agotests: add strace-ff.test
Fei Jie [Mon, 9 May 2016 06:19:56 +0000 (14:19 +0800)]
tests: add strace-ff.test

* tests/strace-ff.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.

8 years agostrace-V.test: cleanup
Dmitry V. Levin [Mon, 9 May 2016 23:19:37 +0000 (23:19 +0000)]
strace-V.test: cleanup

* tests/strace-V.test: Move config.h parser to a function.
Rename $OUT to $EXP, swap arguments passed to match_diff.

8 years agotests: add strace-V.test
Fei Jie [Mon, 9 May 2016 06:19:55 +0000 (14:19 +0800)]
tests: add strace-V.test

* tests/strace-V.test: New test.
* tests/Makefile.am (MISC_TESTS): Add it.

8 years agotests: check decoding of epoll_pwait syscall
Dmitry V. Levin [Mon, 9 May 2016 22:11:24 +0000 (22:11 +0000)]
tests: check decoding of epoll_pwait syscall

* tests/epoll_pwait.c: New file.
* tests/epoll_pwait.test: New test.
* tests/.gitignore: Add epoll_pwait.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add epoll_pwait.test.

8 years agoAssume that sys/epoll.h exists
Dmitry V. Levin [Mon, 9 May 2016 21:46:17 +0000 (21:46 +0000)]
Assume that sys/epoll.h exists

This header file was added in glibc-2.3.2,
so it's safe to assume its availability.

* configure.ac (AC_CHECK_HEADERS): Remove sys/epoll.h.
* epoll.c: Include <sys/epoll.h> unconditionally.
Compile [HAVE_SYS_EPOLL_H] code unconditionally.
* tests/epoll_ctl.c: Do not check for HAVE_SYS_EPOLL_H.
* tests/epoll_wait.c: Likewise.

8 years agoFactorize send_query functions
Fabien Siron [Sun, 8 May 2016 10:45:52 +0000 (10:45 +0000)]
Factorize send_query functions

* socketutils.c (send_query): New function.
(inet_send_query, unix_send_query): Use it.

8 years agotests: relax timings
Dmitry V. Levin [Sun, 8 May 2016 00:00:18 +0000 (00:00 +0000)]
tests: relax timings

Allow nanosleep(2) to spend 10% more time to make the test suite
more reliable on slow systems.

* tests/count.test: Treat 1.1 seconds as valid output.
* tests/strace-T.expected: Likewise.
* tests/strace-r.expected: Likewise.

8 years agotests/attach-f-p.c: increase timeouts
Dmitry V. Levin [Sat, 7 May 2016 23:51:47 +0000 (23:51 +0000)]
tests/attach-f-p.c: increase timeouts

Increase timeouts to make the test more reliable on slow systems.

* tests/attach-f-p.c (its): Increase timeouts to 1, 2, and 3 seconds,
respectively.

8 years agoRemove unused functions
Dmitry V. Levin [Sat, 7 May 2016 23:17:29 +0000 (23:17 +0000)]
Remove unused functions

* defs.h (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr):
Remove.
* util.c (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr):
Likewise.

8 years agov4l2.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 23:15:36 +0000 (23:15 +0000)]
v4l2.c: use print_array function

* v4l2.c (print_v4l2_ext_control, umoven_or_printaddr_ignore_syserror):
New functions.
(print_v4l2_ext_controls): Use them via print_array.

8 years agouid.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 23:14:24 +0000 (23:14 +0000)]
uid.c: use print_array function

* uid.c (print_gid): New function.
(print_groups): Use it via print_array.

8 years agoseccomp.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 23:11:52 +0000 (23:11 +0000)]
seccomp.c: use print_array function

* seccomp.c (decode_filter, decode_seccomp_fprog): Remove.
(print_bpf_filter): New function.
(print_seccomp_fprog): Use it via print_array.
* tests/seccomp-filter-v.c (main): Update.

8 years agoscsi.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 23:10:50 +0000 (23:10 +0000)]
scsi.c: use print_array function

* scsi.c (print_uchar): New function.
(print_sg_io_buffer): Use it via print_array.

8 years agopoll.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 23:09:09 +0000 (23:09 +0000)]
poll.c: use print_array function

* poll.c (print_pollfd): Change for use as print_array callback.
(decode_poll_entering): Use print_array.
* tests/poll.c: Update.
* tests/poll.test: Update.

8 years agonuma.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 23:02:36 +0000 (23:02 +0000)]
numa.c: use print_array function

* numa.c (print_node): New function.
(print_nodemask): Use it via print_array.
(print_page_array, print_int_array): Remove.
(print_addr): New function.
(print_status, print_int): Change for use as print_array callback.
(SYS_FUNC(move_pages)): Use print_addr, print_int, and print_status
via print_array.
* tests/move_pages.c: Update.
* tests/set_mempolicy.c: Likewise.
* tests/set_mempolicy.test: Likewise.

8 years agomem.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 23:00:52 +0000 (23:00 +0000)]
mem.c: use print_array function

* mem.c [POWERPC] (print_protmap_entry): New function.
[POWERPC] (SYS_FUNC(subpage_prot)): Use it via print_array.

8 years agokexec.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 22:59:05 +0000 (22:59 +0000)]
kexec.c: use print_array function

* kexec.c (print_seg): Change for use as print_array callback.
(print_kexec_segments): Use print_array.

8 years agoipc_sem.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 22:56:59 +0000 (22:56 +0000)]
ipc_sem.c: use print_array function

* ipc_sem.c (tprint_sembuf): Rename to print_sembuf, change signature
for use as print_array callback.
(tprint_sembuf_array): Use print_array.

8 years agoio.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 22:54:04 +0000 (22:54 +0000)]
io.c: use print_array function

* io.c (print_iovec_config): New structure.
(print_iovec): New function.
(tprint_iov_upto): Use print_array.
* tests/preadv.c (main): Update.
* tests/pwritev.c (print_iovec, main): Likewise.

8 years agoepoll.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 22:49:39 +0000 (22:49 +0000)]
epoll.c: use print_array function

* epoll.c (print_epoll_event): Change signature for use as print_array
callback, all users updated.
(print_epoll_event_array): Remove.
(epoll_wait_common): Change to use print_array instead
of print_epoll_event_array.

8 years agoaio.c: use print_array function
Dmitry V. Levin [Sat, 7 May 2016 22:40:06 +0000 (22:40 +0000)]
aio.c: use print_array function

* aio.c (print_iocbp): New function.
(SYS_FUNC(io_submit)): Use it via print_array.  Use widen_to_long
to process long int argument.
(print_io_event): Change to print struct io_event fetched elsewhere.
(SYS_FUNC(io_cancel)): Update use of print_io_event.
(SYS_FUNC(io_getevents)): Use print_io_event via print_array.
Use widen_to_long to print long int arguments.
* tests/aio.c (main): Check decoding of io_submit with negative "nr".

8 years agoIntroduce print_array function for consistent decoding of arrays
Dmitry V. Levin [Fri, 6 May 2016 23:26:43 +0000 (23:26 +0000)]
Introduce print_array function for consistent decoding of arrays

* defs.h (print_array): New prototype.
* util.c (print_array): New function.

8 years agoFix corner cases of ICMP_FILTER decoding
Dmitry V. Levin [Fri, 6 May 2016 00:06:15 +0000 (00:06 +0000)]
Fix corner cases of ICMP_FILTER decoding

* net.c (print_icmp_filter): Print icmp_filter for any positive length.
* tests/net-icmp_filter.c: New file.
* tests/net-icmp_filter.test: New test.
* tests/.gitignore: Add net-icmp_filter.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add net-icmp_filter.test.

8 years agoxlat: do not strip "1<<" prefix from xlat strings
Dmitry V. Levin [Thu, 5 May 2016 21:50:23 +0000 (21:50 +0000)]
xlat: do not strip "1<<" prefix from xlat strings

* xlat/gen.sh (cond_xlat, gen_header): Do not strip "1<<" prefix
from xlat strings to fix incorrect output.
* tests/caps.awk: Update.

Reported-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
8 years agotests/xstatfsx.c: fix mips o32 support
Dmitry V. Levin [Wed, 4 May 2016 21:43:18 +0000 (21:43 +0000)]
tests/xstatfsx.c: fix mips o32 support

mips o32 differs from all other 32-bit architectures by defining
__kernel_fsid_t structure as an array of long ints.

* tests/xstatfsx.c (print_statfs): Explicitly cast elements
of PRINT_F_FSID array to unsigned int.

8 years agoMpersify VIDIOC_* ioctl parser
Dmitry V. Levin [Tue, 3 May 2016 22:30:41 +0000 (22:30 +0000)]
Mpersify VIDIOC_* ioctl parser

* v4l2.c: Mpersify arch-specific structures.
(v4l2_ioctl): Mpersify.
* tests/ioctl_v4l2.c: New file.
* tests/ioctl_v4l2.test: New test.
* tests/.gitignore: Add ioctl_v4l2.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add ioctl_v4l2.test.