6956 Commits

Author SHA1 Message Date
Chen Jingpiao
c72ea097a9 filter_qualify: export trace_set set
Prepare for seccomp-assisted syscall filtering, using trace_set
to initialize seccomp BPF.

* filter_qualify.c (trace_set): Remove static qualifier.
* number_set.h (trace_set): New declaration.
2018-08-14 22:08:42 +08:00
150655ca3e Prepare for 4.24 release
* NEWS: Update for 4.24 release.
v4.24
2018-08-14 00:01:02 +00:00
c1154d21a6 Update copyright headers
Headers updated automatically using maint/update_copyright_years.sh
script.
2018-08-12 22:22:32 +00:00
Gleb Fotengauer-Malinovskiy
33e8748587 Update ioctl entries from linux v4.18
* linux/32/ioctls_inc_align16.h: Update from linux v4.18-rc8
using ioctls_gen.sh.
* linux/32/ioctls_inc_align32.h: Likewise.
* linux/32/ioctls_inc_align64.h: Likewise.
* linux/64/ioctls_inc.h: Likewise.
* linux/x32/ioctls_inc0.h: Likewise.
* linux/s390x/ioctls_arch0.h: Likewise.
* NEWS: Mention this.
2018-08-12 09:50:33 +00:00
Gleb Fotengauer-Malinovskiy
5f3b52cd32 maint: update for linux v4.18
* maint/ioctls_sym.sh: Add workaround for linux/omap3isp.h file.
2018-08-12 09:50:33 +00:00
95cf8b343f Replace BTRFS_IOC_[GS]ET_FSLABEL with FS_IOC_[GS]ETFSLABEL
Linux kernel commit v4.18-rc1~37^2~66 introduced FS_IOC_[GS]ETFSLABEL
ioctl constants as generalized copies of BTRFS_IOC_[GS]ET_FSLABEL.

* linux/32/ioctls_inc_align16.h: Replace BTRFS_IOC_[GS]ET_FSLABEL
with FS_IOC_[GS]ETFSLABEL.
* linux/32/ioctls_inc_align32.h: Likewise.
* linux/32/ioctls_inc_align64.h: Likewise.
* linux/64/ioctls_inc.h: Likewise.
* linux/x32/ioctls_inc0.h: Likewise.
* maint/ioctls_sym.sh: Remove BTRFS_IOC_[GS]ET_FSLABEL.
* tests/btrfs.c (FS_IOC_GETFSLABEL, FS_IOC_SETFSLABEL): Add fallback
definitions.
(btrfs_test_label_ioctls, btrfs_test_read_ioctls): Replace
BTRFS_IOC_[GS]ET_FSLABEL with FS_IOC_[GS]ETFSLABEL.
2018-08-12 09:50:33 +00:00
Eugene Syromyatnikov
11e24ca2a4 open.c: use __O_TMPFILE
As it is the flag kernel actually checks against,
and it is now guaranteed to have a fallback definition.

* open.c (STRACE_O_TMPFILE): Remove.
(decode_open): Use __O_TMPFILE instead of STRACE_O_TMPFILE.
2018-08-08 23:27:06 +00:00
f22adb0c7c xlat: regenerate sock_options.in
* xlat/sock_options.in: Regenerate using maint/gen_xlat_defs.sh script.
* xlat/sock_options.sh: Remove.
2018-08-05 18:57:25 +00:00
a6ab0251f0 xlat: add fallback definitions to open_mode_flags
* xlat/open_mode_flags.in: Regenerate using maint/gen_xlat_defs.sh script
to provide fallback definitions.  Implement a workaround for O_NDELAY.

Co-Authored-by: Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
2018-08-05 18:57:25 +00:00
Eugene Syromyatnikov
c20a515b6d xlat: remove non-Linux flags from open_mode_flags
* xlat/open_mode_flags.in (O_PRIV, FNDELAY, FAPPEND, FMARK, FDEFER,
FSHLOCK, FEXLOCK, FCREAT, FTRUNC, FEXCL, FNBIO, FSYNC, FNOCTTY,
O_SHLOCK, O_EXLOCK): Remove flags that are not present in Linux.

Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
2018-08-05 18:57:25 +00:00
22f0253f33 xlat: add fallback definitions to madvise_cmds
* xlat/madvise_cmds.in: Regenerate using maint/gen_xlat_defs.sh script
to provide fallback definitions.

Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
2018-08-05 18:57:25 +00:00
d7da491c34 xlat: add fallback definitions to mmap_flags
* xlat/mmap_flags.in: Regenerate using maint/gen_xlat_defs.sh script
to provide fallback definitions.  Implement a workaround for MAP_RENAME.

Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
2018-08-05 18:57:25 +00:00
Eugene Syromyatnikov
769946f50a maint: add a Linux UAPI headers crawler
This script is going to be used to generate xlat fallback values.

* maint/gen_xlat_defs.sh: New file.

Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
2018-08-05 18:57:25 +00:00
6757946d39 strace.spec.in: use $RPM_OPT_FLAGS when building auxiliary programs
* strace.spec.in: Set CFLAGS_FOR_BUILD to "$RPM_OPT_FLAGS" so that
$RPM_OPT_FLAGS is honored when building auxiliary programs like
ioctlsort.
2018-08-05 11:49:04 +00:00
090bd651d3 strace.spec.in: compress changelog files
Some say uncompressed changelog files are too big.

* strace.spec.in: Compress ChangeLog and ChangeLog-CVS using gzip -9n.
2018-08-05 11:49:04 +00:00
6215963cde strace.spec.in: use a SUSE-specific group name for SUSE
Since, apparently, it isn't quite happy with a simple group name
"Development/Debuggers".

* strace.spec.in (Group): Add %{?suse_version:/Tools}.
2018-08-05 11:49:04 +00:00
Eugene Syromyatnikov
5771116f98 strace.spec.in: use a SUSE-specific license name for SUSE
Since, apparently, it isn't quite happy with a simple "BSD".

* strace.spec.in (License): Add %{?suse_version:-3-Clause}.

Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
2018-08-05 11:49:04 +00:00
Eugene Syromyatnikov
76cdf04c31 tests: allow any error code when trying to set time
Lower expectations of particular error code numbers when trying to set
time.  This helps to workaround issues with unexpected return codes
in some exotic environments where EPERM is returned instead of EINVAL
(e.g. mock that uses systemd-nspawn).

* tests/clock_xettime.c (main): Do not hardcode EINVAL, print return
codes using sprintrc.
* tests/xettimeofday.c (main): Likewise.
* NEWS: Mention this fix.

Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
2018-08-05 11:49:04 +00:00
Eugene Syromyatnikov
197014937c s390x: fix build with old kernel headers
Avoid defining psw_compat_t and s390_compat_regs if their definitions
are provided by kernel.  Before Linux commit v3.10-rc1~201^2~11,
these definition were available in <asm/ptrace.h>.

* configure.ac (AC_CHECK_TYPES): Check for s390_compat_regs.
* linux/s390x/arch_regs.c [HAVE_S390_COMPAT_REGS]: Do not define
psw_compat_t and s390_compat_regs.
* NEWS: Mention this fix.

Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
2018-08-05 11:49:04 +00:00
0930b2303e strace.spec.in: minor updates here and there
* strace.spec.in: Add descriptive comments to build requirements.
Introduce %maybe_use_defattr and use it instead of %defattr.
Add output of ld --version to the build environment information.
Use printf instead of echo -e.
2018-08-05 11:49:04 +00:00
594cd12cd6 strace.spec.in: remove strace64 subpackage
strace64 subpackage used to be installed into ppc32 and sparc32
userspace running by a 64-bit kernel to trace 64-bit processes.

As simultaneous decoding of processes running both in 64-bit and 32-bit
personality is fully supported on every architecture with compat kernel
support for quite some time, one can just install a 64-bit strace and
there is no more need for that strace64 kludge.

* strace.spec.in (strace64_arches, copy64, %ifarch %{strace64_arches}):
Remove.
2018-08-05 11:49:04 +00:00
656de0c59f Update NEWS 2018-08-04 20:34:09 +00:00
cc1da1e9fd Update NEWS 2018-08-04 11:45:20 +00:00
dad8828327 rtnl_route: decode new RTA_* attributes
* rtnl_route.c (rtmsg_nla_decoders): Add entries for RTA_IP_PROTO,
RTA_SPORT, and RTA_DPORT.
2018-08-04 11:45:20 +00:00
e9e2dec950 xlat: update RTA_* constants
* xlat/rtnl_route_attrs.in: Add RTA_IP_PROTO, RTA_SPORT, and RTA_DPORT
* constants introduced by Linux kernel commit v4.18-rc1~114^2~165^2~2.
2018-08-04 11:45:20 +00:00
2eb862c260 rtnl_link: decode new IFLA_BRPORT_* attributes
* rtnl_link.c (ifla_brport_nla_decoders): Add entries for
IFLA_BRPORT_GROUP_FWD_MASK, IFLA_BRPORT_NEIGH_SUPPRESS, and
IFLA_BRPORT_ISOLATED.
2018-08-04 11:45:20 +00:00
a72d6cdea0 xlat: update IFLA_BRPORT_* constants
* xlat/rtnl_ifla_brport_attrs.in: Add IFLA_BRPORT_GROUP_FWD_MASK
constant introduced by Linux kernel commit v4.15-rc1~84^2~607.
Add IFLA_BRPORT_NEIGH_SUPPRESS constant introduced by Linux kernel
commit v4.15-rc1~84^2~523^2~2.
Add IFLA_BRPORT_ISOLATED constant introduced by Linux kernel commit
v4.18-rc1~114^2~142.
2018-08-04 11:45:20 +00:00
90eee029a9 xlat: update IFA_* constants
* xlat/rtnl_addr_attrs.in: Add IFA_RT_PRIORITY constant introduced
by Linux kernel commit v4.18-rc1~114^2~108^2~3
2018-08-04 11:45:20 +00:00
3ecff1d391 xlat: update RTPROT_* constants
* xlat/routing_protocols.in: Add RTPROT_BGP, RTPROT_ISIS, RTPROT_OSPF,
RTPROT_RIP, and RTPROT_EIGRP constants introduced by Linux kernel commit
v4.18-rc1~114^2~90.
2018-08-04 11:45:20 +00:00
150197054f xlat: save the script used to generate xlat/sock_options.in
* xlat/sock_options.sh: New file from commit message of commit v4.23~199.
2018-08-01 14:57:16 +00:00
Zhibin Li
49f45ff291 tests: check decoding of getsockopt(PACKET_STATISTICS)
* tests/net-tpacket_stats.c: New file.
* tests/net-tpacket_stats-success.c: Likewise.
* tests/gen_tests.in (net-tpacket_stats): New test.
* tests/net-tpacket_stats-success.test: Likewise.
* tests/.gitignore: Add net-tpacket_stats and net-tpacket_stats-success.
* tests/Makefile.am (check_PROGRAMS): Add net-tpacket_stats-success.
(DECODER_TESTS): Add net-tpacket_stats-success.test.
* tests/pure_executables.list: Add net-tpacket_stats.
2018-08-01 14:57:16 +00:00
Zhibin Li
7ecd1096bf tests: check decoding of setsockopt(PACKET_[R|T]X_RING)
* tests/net-tpacket_req.c: New file.
* tests/.gitignore: Add net-tpacket_req.
* tests/pure_executables.list: Likewise.
* tests/gen_tests.in (net-tpacket_req): New test.
2018-08-01 14:57:16 +00:00
Zhibin Li
8f9a7721d5 tests: check decoding of setsockopt(PACKET_[ADD|DROP]_MEMBERSHIP)
* tests/net-packet_mreq.c: New file.
* tests/.gitignore: Add net-packet_mreq.
* tests/pure_executables.list: Likewise.
* tests/gen_tests.in (net-packet_mreq): New test.
2018-08-01 14:57:16 +00:00
c5c5b53d7f tests: bring lists back to the sorted order
* tests/.gitignore: Make the list sorted again.
* tests/pure_executables.list: Likewise.
* tests/Makefile.am (check_PROGRAMS, DECODER_TESTS, MISC_TESTS):
Likewise.
2018-07-20 16:18:17 +00:00
Zhibin Li
1b5b5b76b5 tests: check decoding of successful quotactl
* tests/quotactl-success.c: New file.
* tests/quotactl-success-v.c: Likewise.
* tests/quotactl-xfs-success.c: Likewise.
* tests/quotactl-xfs-success-v.c: Likewise.
* tests/quotactl-success.test: New test.
* tests/quotactl-success-v.test: Likewise.
* tests/quotactl-xfs-success.test: Likewise.
* tests/quotactl-xfs-success-v.test: Likewise.
* tests/.gitignore: Add quotactl-success, quotactl-success-v,
quotactl-xfs-success and quotactl-xfs-success-v.
* tests/Makefile.am (check_PROGRAMS): Likewise.
(DECODER_TESTS): Add four new tests listed above.
* tests/quotactl.h: [INJECT_RETVAL] (check_quota): Use errstr instead of
sprintrc; check that returned value is equivalent to the injected one;
append "(INJECTED)" string to errstr.
* tests/quotactl.c: Changed condition rc != 0 to rc < 0 in callback
functions and value of opaque pointer addr_cb_arg in order to check
successful injection.
* tests/quotactl-xfs.c: Likewise.
2018-07-20 16:18:17 +00:00
860ccdefea net: enhance decoding of getsockopt(PACKET_STATISTICS)
* net.c (print_tpacket_stats): Change decoder to match the kernel
behaviour: getsockopt syscall accepts any non-negative *optlen and
writes either MIN(sizeof(struct tpacket_stats), *optlen) or
MIN(sizeof(struct tpacket_stats_v3), *optlen) bytes of data.
2018-07-18 20:03:18 +00:00
ad2c9352a6 net: compile SO_PEERCRED/SO_ATTACH_FILTER/SO_ATTACH_REUSEPORT_CBPF code unconditionally
* net.c: Remove checks for SO_PEERCRED, SO_ATTACH_FILTER, and
SO_ATTACH_REUSEPORT_CBPF macros as they are defined unconditionally
since commit v4.23~199.
2018-07-18 20:03:18 +00:00
6fd0508195 net: enhance decoding of getsockopt(SO_PEERCRED)
* net.c (print_ucred): Rename to print_get_ucred, change decoder
to match the kernel behaviour: getsockopt syscall accepts any
non-negative *optlen and writes MIN(sizeof(struct ucred), *optlen)
bytes of data.
(print_getsockopt): Replace print_ucred with print_get_ucred.
* tests/so_percred.c: Include <string.h>.
(main): Update expected output.
2018-07-18 20:03:18 +00:00
9ccd194f1d net: enhance decoding of getsockopt(SO_LINGER)
* net.c (print_get_linger): Change decoder to match the kernel
behaviour: getsockopt syscall accepts any non-negative *optlen
and writes MIN(sizeof(struct linger), *optlen) bytes of data.
(print_set_linger): Move after definition of SYS_FUNC(getsockopt).
* tests/so_linger.c: Include <stddef.h> and <string.h>.
(main): Update expected output.
2018-07-18 19:25:52 +00:00
27aa9e77df net: generalize getsockopt length check
* net.c (print_getsockopt): Apply (ulen < 0 || rlen < 0) check for all
cases.  As the kernel neither accepts nor returns a negative length
in case of successful getsockopt syscall invocation, these negative
values must have been forged by userspace.
2018-07-18 19:25:52 +00:00
3dbffb74cc tests: fix build with fresh glibc
Workaround additional incompatibility between <sys/stat.h> and
<asm/stat.h> introduced by glibc-2.27.9000-566-gfd70af4.

* tests/xstatx.c (statx, statx_timestamp): Redefine before the inclusion
of <sys/stat.h> to avoid conflicts between definitions provided by the
linux kernel headers and the GNU libc.
2018-07-15 22:14:29 +00:00
Eugene Syromyatnikov
2b96d4c477 tests/quotactl.h: document check_quota
* tests/quotactl.h (check_quota): Add a comment describing the function
usage.
2018-07-15 18:51:09 +00:00
Zhibin Li
15dad53761 tests/quotactl-xfs.c: fix indentation 2018-07-15 18:51:09 +00:00
Zhibin Li
7a4582e357 tests: use check_quota for invalid quotactl commands
Use check_quota function for invalid commands instead of manual quotactl
syscall invocations. In this way successful injection can also be checked
for these commands in the next commit.

* tests/quotactl.c (main): Add invalid_cmd_str and invalid_id_str local
variables, remove unused variable rc, use check_quota instead of manual
quotactl syscall invocations.
* tests/quotaclt.c (main): Add invalid_cmd_str variable, remove unused
variable rc, use check_quota instead of manual quotactl syscall invocations.
2018-07-15 18:51:09 +00:00
Zhibin Li
f23ff6cebf tests: enhance test coverage of quotactl syscall parser
* tests/quotactl.c (print_dqfmt): New function.
(main): Use print_dqfmt to print flags of quota format, improve existing
tests and add more tests for Q_GETFMT.
* tests/quotactl-xfs.c: Improve existing tests and add more tests for
Q_XGETQSTAT and Q_XGETQSTATV.
2018-07-15 18:51:09 +00:00
Zhibin Li
965e18c407 tests/quotactl-xfs.c: fix typos in QCMD
* tests/quotactl-xfs.c (main): fix typos of sub-commands in QCMD.
2018-07-15 18:51:09 +00:00
Zhibin Li
de6e322986 Mpersify decoder of struct xfs_dqstats
* xfs_quota_stat.h: New file.
* fetch_struct_xfs_quotastat.c: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* quota.c: Include xfs_quota_stat.h
(struct fs_qfilestat, struct xfs_dqstats): Moved to xfs_quota_stat.h.
(decode_cmd_data) <case Q_XGETQSTAT>: Use fetch_struct_quotastat.
2018-07-15 18:51:09 +00:00
Zhibin Li
44a99c878b quota: fix disorder of PRINT_FIELD invocations
* quota.c (decode_cmd_data) <case Q_XGETQSTAT>: Print fields
of struct xfs_dqstats in the structure order.
2018-07-15 18:51:09 +00:00
Zhibin Li
fd5765aad8 tests: extend coverage for other fcntl flags
* tests/fcntl-common.c: Include <assert.h>.
(struct fcntl_cmd_check): New structure.
(print_retval_flags, test_other_set_cmd, test_other_get_cmd,
print_flags_getfd, print_flags_getsig, print_flags_getlease,
test_fcntl_others): New functions.
(main): Use test_fcntl_others.
2018-07-12 08:51:04 +00:00
048d1885fa Implement -e kvm= option on all architectures
Make -e kvm= interface available on all architectures by adding a stub
on those architectures that do not have <linux/kvm.h>.

* filter_qualify.c (qualify_kvm): Define unconditionally.
(qual_options): Define qualify_kvm entry unconditionally.
* strace.c (usage): Mention kvm argument of -e option unconditionally.
2018-07-11 00:00:57 +00:00