strace/SOURCES/0149-Implement-secontext-fu...

13902 lines
498 KiB
Diff

From 45d71f938a2e92662a14097b7e1c27c13137c5f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Renaud=20M=C3=A9trich?= <rmetrich@redhat.com>
Date: Wed, 29 Jan 2020 15:22:47 +0100
Subject: [PATCH 149/149] Implement --secontext[=full] option to display
SELinux contexts
This is very useful when debugging SELinux issues, in particular, when
a process runs in an unexpected context or didn't transition properly,
or typically when a file being opened does not have the proper context.
When --secontext=full is specified, strace will print the complete
context (user, role, type and category) instead of just the type which
is printed for --secontext option, as shown in the examples below:
Without any "--secontext" options:
-----------------------------------------------------------------------
118104 16:52:11.141122 select(9, [4<TCP:[0.0.0.0:22]> 6<TCPv6:[[::]:22]>], NULL, NULL, NULL) = 1 (in [4]) <1.845416>
119820 16:52:13.133319 openat(AT_FDCWD, "/home/rmetrich/.ssh/authorized_keys", O_RDONLY|O_NONBLOCK) = 11</home/rmetrich/.ssh/authorized_keys> <0.000399>
-----------------------------------------------------------------------
With "--secontext=full" option:
-----------------------------------------------------------------------
118104 [system_u:system_r:sshd_t:s0-s0:c0.c1023] 16:52:11.141122 select(9, [4<TCP:[0.0.0.0:22]> 6<TCPv6:[[::]:22]>], NULL, NULL, NULL) = 1 (in [4]) <1.845416>
119820 [system_u:system_r:sshd_t:s0-s0:c0.c1023] 16:52:13.133319 openat(AT_FDCWD, "/home/rmetrich/.ssh/authorized_keys" [system_u:object_r:nfs_t:s0], O_RDONLY|O_NONBLOCK) = 11</home/rmetrich/.ssh/authorized_keys> [system_u:object_r:nfs_t:s0] <0.000399>
-----------------------------------------------------------------------
With "--secontext" option:
-----------------------------------------------------------------------
118104 [sshd_t] 16:52:11.141122 select(9, [4<TCP:[0.0.0.0:22]> 6<TCPv6:[[::]:22]>], NULL, NULL, NULL) = 1 (in [4]) <1.845416>
119820 [sshd_t] 16:52:13.133319 openat(AT_FDCWD, "/home/rmetrich/.ssh/authorized_keys" [nfs_t], O_RDONLY|O_NONBLOCK) = 11</home/rmetrich/.ssh/authorized_keys> [nfs_t] <0.000399>
-----------------------------------------------------------------------
To implement this, a new "--with-libselinux" configure option has been
introduced. It defaults to "check", which means automatic support on
SELinux aware systems.
Co-authored-by: Dmitry V. Levin <ldv@strace.io>
---
Makefile.am | 10 +++
NEWS | 3 +
bootstrap | 11 ++-
configure.ac | 2 +
defs.h | 9 ++
dirent.c | 3 +
m4/mpers.m4 | 26 ++++++
m4/st_selinux.m4 | 80 ++++++++++++++++++
open.c | 3 +
secontext.c | 139 +++++++++++++++++++++++++++++++
secontext.h | 21 +++++
strace.1.in | 9 ++
strace.c | 53 +++++++++++-
strace.spec.in | 3 +
syscall.c | 5 ++
tests/.gitignore | 5 ++
tests/Makefile.am | 11 +++
tests/access.c | 23 +++++-
tests/chmod.c | 35 +++++---
tests/execve.c | 53 +++++++++---
tests/execve.test | 2 +-
tests/execveat.c | 122 +++++++++++++++++++++++++--
tests/faccessat.c | 137 ++++++++++++++++++++++++++++++-
tests/faccessat.test | 2 +-
tests/fanotify_mark.c | 121 +++++++++++++++++----------
tests/fchmod.c | 23 ++++--
tests/fchmodat.c | 67 +++++++++++++--
tests/fchownat.c | 73 +++++++++++++++--
tests/file_handle.c | 204 +++++++++++++++++++++++++++++++---------------
tests/gen_secontext.sh | 72 ++++++++++++++++
tests/gen_tests.in | 30 +++++++
tests/linkat.c | 150 +++++++++++++++++++++++++++++++++-
tests/open.c | 18 ++--
tests/openat.c | 91 +++++++++++++++++----
tests/options-syntax.test | 13 ++-
tests/secontext.c | 201 +++++++++++++++++++++++++++++++++++++++++++++
tests/secontext.h | 46 +++++++++++
tests/strace-V.test | 4 +-
util.c | 16 ++++
xgetdents.c | 3 +
40 files changed, 1703 insertions(+), 196 deletions(-)
create mode 100644 m4/st_selinux.m4
create mode 100644 secontext.c
create mode 100644 secontext.h
create mode 100755 tests/gen_secontext.sh
create mode 100644 tests/secontext.c
create mode 100644 tests/secontext.h
Index: strace-5.7/Makefile.am
===================================================================
--- strace-5.7.orig/Makefile.am 2021-08-24 21:08:35.376312714 +0200
+++ strace-5.7/Makefile.am 2021-08-24 21:08:43.248246086 +0200
@@ -404,11 +404,21 @@
endif
endif
+if ENABLE_SECONTEXT
+libstrace_a_SOURCES += \
+ secontext.c \
+ secontext.h
+strace_CPPFLAGS += $(libselinux_CPPFLAGS)
+strace_LDFLAGS += $(libselinux_LDFLAGS)
+strace_LDADD += $(libselinux_LIBS)
+endif
+
@CODE_COVERAGE_RULES@
CODE_COVERAGE_BRANCH_COVERAGE = 1
CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
--prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .)
CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*' '*/tests/*' '*/tests-m32/*' '*/tests-mx32/*'
+
strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS)
strace_CFLAGS += $(CODE_COVERAGE_CFLAGS)
strace_LDADD += $(CODE_COVERAGE_LIBS)
Index: strace-5.7/NEWS
===================================================================
--- strace-5.7.orig/NEWS 2021-08-24 21:08:35.376312714 +0200
+++ strace-5.7/NEWS 2021-08-24 21:08:43.249246078 +0200
@@ -2,6 +2,9 @@
==============================================
* Improvements
+ * Implemented --secontext[=full] option to display SELinux contexts.
+ * Added --pidns-translation option for PID namespace translation (addresses
+ Fedora bug #1035433).
* Implemented interval specification in "when=" subexpression of syscall
tampering expressions.
* Added -e trace=%clock option for tracing syscalls reading of modifying
Index: strace-5.7/configure.ac
===================================================================
--- strace-5.7.orig/configure.ac 2021-08-24 21:08:35.376312714 +0200
+++ strace-5.7/configure.ac 2021-08-24 21:08:43.250246069 +0200
@@ -764,6 +764,8 @@
st_STACKTRACE
+st_SELINUX
+
if test "$arch" = mips && test "$no_create" != yes; then
mkdir -p linux/mips
if $srcdir/linux/mips/genstub.sh \
Index: strace-5.7/defs.h
===================================================================
--- strace-5.7.orig/defs.h 2021-08-24 21:08:35.377312705 +0200
+++ strace-5.7/defs.h 2021-08-24 21:08:43.251246061 +0200
@@ -287,6 +287,10 @@
*/
unsigned int pid_ns;
+#ifdef ENABLE_SECONTEXT
+ int last_dirfd; /* Use AT_FDCWD for 'not set' */
+#endif
+
struct mmap_cache_t *mmap_cache;
/*
@@ -1123,6 +1127,11 @@
extern void print_x25_addr(const void /* struct x25_address */ *addr);
extern const char *get_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode);
extern bool print_sockaddr_by_inode(struct tcb *, int fd, unsigned long inode);
+
+/**
+ * Prints dirfd file descriptor and saves it in tcp->last_dirfd,
+ * the latter is used when printing SELinux contexts.
+ */
extern void print_dirfd(struct tcb *, int);
extern int
Index: strace-5.7/dirent.c
===================================================================
--- strace-5.7.orig/dirent.c 2021-08-24 21:08:35.377312705 +0200
+++ strace-5.7/dirent.c 2021-08-24 21:08:43.251246061 +0200
@@ -100,6 +100,9 @@
{
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
+#ifdef ENABLE_SECONTEXT
+ tcp->last_dirfd = (int) tcp->u_arg[0];
+#endif
tprints(", ");
} else {
if (tcp->u_rval == 0)
Index: strace-5.7/m4/mpers.m4
===================================================================
--- strace-5.7.orig/m4/mpers.m4 2021-08-24 21:08:35.377312705 +0200
+++ strace-5.7/m4/mpers.m4 2021-08-24 21:08:43.252246052 +0200
@@ -63,9 +63,11 @@
pushdef([MPERS_NAME], translit([$1], [a-z], [A-Z]))
pushdef([HAVE_MPERS], [HAVE_]MPERS_NAME[_MPERS])
pushdef([HAVE_RUNTIME], [HAVE_]MPERS_NAME[_RUNTIME])
+pushdef([HAVE_SELINUX_RUNTIME], [HAVE_]MPERS_NAME[_SELINUX_RUNTIME])
pushdef([MPERS_CFLAGS], [$cc_flags_$1])
pushdef([st_cv_cc], [st_cv_$1_cc])
pushdef([st_cv_runtime], [st_cv_$1_runtime])
+pushdef([st_cv_selinux_runtime], [st_cv_$1_selinux_runtime])
pushdef([st_cv_mpers], [st_cv_$1_mpers])
pushdef([EXEEXT], MPERS_NAME[_EXEEXT])dnl
@@ -126,6 +128,26 @@
else
st_cv_mpers=no
fi])
+ AS_IF([test "x$enable_secontext$st_cv_mpers$st_cv_runtime" = xyesyesyes],
+ [AC_CACHE_CHECK([whether selinux runtime works with mpers_name personality],
+ [st_cv_selinux_runtime],
+ [saved_CPPFLAGS="$CPPFLAGS"
+ saved_LDFLAGS="$LDFLAGS"
+ saved_LIBS="$LIBS"
+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS"
+ LDFLAGS="$LDFLAGS $libselinux_LDFLAGS"
+ LIBS="$LIBS $libselinux_LIBS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <selinux/selinux.h>]],
+ [[return 0]])],
+ [st_cv_selinux_runtime=yes],
+ [st_cv_selinux_runtime=no],
+ [st_cv_selinux_runtime=no])
+ LIBS="$saved_LIBS"
+ LDFLAGS="$saved_LDFLAGS"
+ CPPFLAGS="$saved_CPPFLAGS"
+ ])
+ ],
+ [st_cv_selinux_runtime=no])
if test $st_cv_mpers = yes; then
AC_DEFINE(HAVE_MPERS, [1],
[Define to 1 if you have mpers_name mpers support])
@@ -165,6 +187,7 @@
*) # case "$enable_mpers"
st_cv_runtime=no
st_cv_mpers=no
+ st_cv_selinux_runtime=no
;;
esac
@@ -187,6 +210,7 @@
esac
AM_CONDITIONAL(HAVE_RUNTIME, [test "$st_cv_mpers$st_cv_runtime" = yesyes])
+AM_CONDITIONAL(HAVE_SELINUX_RUNTIME, [test "$st_cv_mpers$st_cv_selinux_runtime" = yesyes])
AM_CONDITIONAL(HAVE_MPERS, [test "$st_cv_mpers" = yes])
st_RESTORE_VAR([CC])
@@ -201,9 +225,11 @@
popdef([st_cv_mpers])
popdef([st_cv_runtime])
+popdef([st_cv_selinux_runtime])
popdef([st_cv_cc])
popdef([MPERS_CFLAGS])
popdef([HAVE_RUNTIME])
+popdef([HAVE_SELINUX_RUNTIME])
popdef([HAVE_MPERS])
popdef([MPERS_NAME])
popdef([mpers_name])
Index: strace-5.7/m4/st_selinux.m4
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/m4/st_selinux.m4 2021-08-24 21:08:43.252246052 +0200
@@ -0,0 +1,80 @@
+#!/usr/bin/m4
+#
+# Copyright (c) 2020 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+AC_DEFUN([st_SELINUX], [dnl
+
+libselinux_CPPFLAGS=
+libselinux_LDFLAGS=
+libselinux_LIBS=
+enable_secontext=no
+
+AC_ARG_WITH([libselinux],
+ [AS_HELP_STRING([--with-libselinux],
+ [use libselinux to collect security contexts])],
+ [case "${withval}" in
+ yes|no|check) ;;
+ *) with_libselinux=yes
+ libselinux_CPPFLAGS="-I${withval}/include"
+ libselinux_LDFLAGS="-L${withval}/lib" ;;
+ esac],
+ [with_libselinux=check]
+)
+
+AS_IF([test "x$with_libselinux" != xno],
+ [saved_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS"
+ found_selinux_h=no
+ AC_CHECK_HEADERS([selinux/selinux.h],
+ [found_selinux_h=yes])
+ CPPFLAGS="$saved_CPPFLAGS"
+ AS_IF([test "x$found_selinux_h" = xyes],
+ [saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $libselinux_LDFLAGS"
+ AC_CHECK_LIB([selinux],[getpidcon],
+ [libselinux_LIBS="-lselinux"
+ enable_secontext=yes
+ ],
+ [if test "x$with_libselinux" != xcheck; then
+ AC_MSG_FAILURE([failed to find getpidcon in libselinux])
+ fi
+ ]
+ )
+ AC_CHECK_LIB([selinux],[getfilecon],
+ [libselinux_LIBS="-lselinux"
+ enable_secontext=yes
+ ],
+ [if test "x$with_libselinux" != xcheck; then
+ AC_MSG_FAILURE([failed to find getfilecon in libselinux])
+ fi
+ ]
+ )
+ LDFLAGS="$saved_LDFLAGS"
+ ],
+ [if test "x$with_libselinux" != xcheck; then
+ AC_MSG_FAILURE([failed to find selinux.h])
+ fi
+ ]
+ )
+ ]
+)
+
+AC_MSG_CHECKING([whether to enable security contexts support])
+AS_IF([test "x$enable_secontext" = xyes],
+ [AC_DEFINE([ENABLE_SECONTEXT], [1],
+ [Define to enable SELinux security contexts support])
+ AC_DEFINE([HAVE_SELINUX_RUNTIME], [1],
+ [Define to enable SELinux security contexts testing])
+ AC_SUBST(libselinux_LIBS)
+ AC_SUBST(libselinux_LDFLAGS)
+ AC_SUBST(libselinux_CPPFLAGS)
+ AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])])
+
+AM_CONDITIONAL([ENABLE_SECONTEXT], [test "x$enable_secontext" = xyes])
+AM_CONDITIONAL([HAVE_SELINUX_RUNTIME], [test "x$enable_secontext" = xyes])
+
+])
Index: strace-5.7/open.c
===================================================================
--- strace-5.7.orig/open.c 2021-08-24 21:08:35.378312697 +0200
+++ strace-5.7/open.c 2021-08-24 21:08:43.253246044 +0200
@@ -50,6 +50,9 @@
print_xlat_d(AT_FDCWD);
else
printfd(tcp, fd);
+#ifdef ENABLE_SECONTEXT
+ tcp->last_dirfd = fd;
+#endif
}
/*
Index: strace-5.7/secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/secontext.c 2021-08-24 21:08:43.253246044 +0200
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2020-2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+#include <stdlib.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <selinux/selinux.h>
+
+#include "secontext.h"
+#include "xstring.h"
+
+bool selinux_context = false;
+bool selinux_context_full = false;
+
+static int
+getcontext(int rc, char **secontext, char **result)
+{
+ if (rc < 0)
+ return rc;
+
+ *result = NULL;
+ if (!selinux_context_full) {
+ char *saveptr = NULL;
+ char *secontext_copy = xstrdup(*secontext);
+ const char *token;
+ unsigned int i;
+
+ /*
+ * We only want to keep the type (3rd field, ':' separator).
+ */
+ for (token = strtok_r(secontext_copy, ":", &saveptr), i = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), i++) {
+ if (i == 2) {
+ *result = xstrdup(token);
+ break;
+ }
+ }
+ free(secontext_copy);
+ }
+
+ if (*result == NULL) {
+ /*
+ * On the CI at least, the context may have a trailing \n,
+ * let's remove it just in case.
+ */
+ size_t len = strlen(*secontext);
+ for (; len > 0; --len) {
+ if ((*secontext)[len - 1] != '\n')
+ break;
+ }
+ *result = xstrndup(*secontext, len);
+ }
+ freecon(*secontext);
+ return 0;
+}
+/*
+ * Retrieves the SELinux context of the given PID (extracted from the tcb).
+ * Memory must be freed.
+ * Returns 0 on success, -1 on failure.
+ */
+int
+selinux_getpidcon(struct tcb *tcp, char **result)
+{
+ if (!selinux_context)
+ return -1;
+
+ int proc_pid = 0;
+ translate_pid(NULL, tcp->pid, PT_TID, &proc_pid);
+ if (!proc_pid)
+ return -1;
+
+ char *secontext;
+ return getcontext(getpidcon(proc_pid, &secontext), &secontext, result);
+}
+
+/*
+ * Retrieves the SELinux context of the given pid and descriptor.
+ * Memory must be freed.
+ * Returns 0 on success, -1 on failure.
+ */
+int
+selinux_getfdcon(pid_t pid, int fd, char **result)
+{
+ if (!selinux_context || pid <= 0 || fd < 0)
+ return -1;
+
+ int proc_pid = 0;
+ translate_pid(NULL, pid, PT_TID, &proc_pid);
+ if (!proc_pid)
+ return -1;
+
+ char linkpath[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3];
+ xsprintf(linkpath, "/proc/%u/fd/%u", proc_pid, fd);
+
+ char *secontext;
+ return getcontext(getfilecon(linkpath, &secontext), &secontext, result);
+}
+
+/*
+ * Retrieves the SELinux context of the given path.
+ * Memory must be freed.
+ * Returns 0 on success, -1 on failure.
+ */
+int
+selinux_getfilecon(struct tcb *tcp, const char *path, char **result)
+{
+ if (!selinux_context)
+ return -1;
+
+ int proc_pid = 0;
+ translate_pid(NULL, tcp->pid, PT_TID, &proc_pid);
+ if (!proc_pid)
+ return -1;
+
+ int ret = -1;
+ char fname[PATH_MAX];
+
+ if (path[0] == '/')
+ ret = snprintf(fname, sizeof(fname), "/proc/%u/root%s",
+ proc_pid, path);
+ else if (tcp->last_dirfd == AT_FDCWD)
+ ret = snprintf(fname, sizeof(fname), "/proc/%u/cwd/%s",
+ proc_pid, path);
+ else if (tcp->last_dirfd >= 0 )
+ ret = snprintf(fname, sizeof(fname), "/proc/%u/fd/%u/%s",
+ proc_pid, tcp->last_dirfd, path);
+
+ if ((unsigned int) ret >= sizeof(fname))
+ return -1;
+
+ char *secontext;
+ return getcontext(getfilecon(fname, &secontext), &secontext, result);
+}
Index: strace-5.7/secontext.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/secontext.h 2021-08-24 21:08:43.253246044 +0200
@@ -0,0 +1,21 @@
+/*
+ * SELinux interface.
+ *
+ * Copyright (c) 2020-2021 The strace developers.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef STRACE_SECONTEXT_H
+#define STRACE_SECONTEXT_H
+
+#include "defs.h"
+
+extern bool selinux_context;
+extern bool selinux_context_full;
+
+int selinux_getfdcon(pid_t pid, int fd, char **context);
+int selinux_getfilecon(struct tcb *tcp, const char *path, char **context);
+int selinux_getpidcon(struct tcb *tcp, char **context);
+
+#endif /* !STRACE_SECONTEXT_H */
Index: strace-5.7/strace.1.in
===================================================================
--- strace-5.7.orig/strace.1.in 2021-08-24 21:08:35.379312688 +0200
+++ strace-5.7/strace.1.in 2021-08-24 21:08:43.254246035 +0200
@@ -53,6 +53,7 @@
.OM \-P path
.OM \-p pid
.OP \-\-seccomp\-bpf
+.if '@ENABLE_SECONTEXT_FALSE@'#' .OP \-\-secontext\fR[=full]
.BR "" {
.OR \-p pid
.BR "" |
@@ -1079,6 +1080,14 @@
.B \-\-pidns\-translation
If strace and tracee are in different PID namespaces, print PIDs in
strace's namespace, too.
+.if '@ENABLE_SECONTEXT_FALSE@'#' .TP
+.if '@ENABLE_SECONTEXT_FALSE@'#' .BR \-\-secontext "[=full]"
+.if '@ENABLE_SECONTEXT_FALSE@'#' When SELinux is available and is not disabled,
+.if '@ENABLE_SECONTEXT_FALSE@'#' print in square brackets SELinux contexts of
+.if '@ENABLE_SECONTEXT_FALSE@'#' processes, files, and descriptors. When
+.if '@ENABLE_SECONTEXT_FALSE@'#' .B full
+.if '@ENABLE_SECONTEXT_FALSE@'#' is specified, print the complete context (user,
+.if '@ENABLE_SECONTEXT_FALSE@'#' role, type and category) instead of just the type.
.SS Statistics
.TP 12
.B \-c
Index: strace-5.7/strace.c
===================================================================
--- strace-5.7.orig/strace.c 2021-08-24 21:08:35.380312680 +0200
+++ strace-5.7/strace.c 2021-08-24 21:08:43.255246027 +0200
@@ -40,6 +40,7 @@
#include "xstring.h"
#include "delay.h"
#include "wait.h"
+#include "secontext.h"
/* In some libc, these aren't declared. Do it ourself: */
extern char **environ;
@@ -239,6 +240,9 @@
" no-mx32-mpers"
# endif
#endif /* SUPPORTED_PERSONALITIES > 2 */
+#ifdef ENABLE_SECONTEXT
+ " secontext"
+#endif
"";
printf("%s -- version %s\n"
@@ -258,11 +262,17 @@
#else
# define K_OPT ""
#endif
+#ifdef ENABLE_SECONTEXT
+# define SECONTEXT_OPT "[--secontext[=full]]\n"
+#else
+# define SECONTEXT_OPT ""
+#endif
printf("\
Usage: strace [-ACdffhi" K_OPT "qqrtttTvVwxxyyzZ] [-I N] [-b execve] [-e EXPR]...\n\
[-a COLUMN] [-o FILE] [-s STRSIZE] [-X FORMAT] [-O OVERHEAD]\n\
- [-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n\
+ [-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n"\
+ SECONTEXT_OPT "\
{ -p PID | [-DDD] [-E VAR=VAL]... [-u USERNAME] PROG [ARGS] }\n\
or: strace -c[dfwzZ] [-I N] [-b execve] [-e EXPR]... [-O OVERHEAD]\n\
[-S SORTBY] [-P PATH]... [-p PID]... [-U COLUMNS] [--seccomp-bpf]\n\
@@ -401,6 +411,14 @@
-yy, --decode-fds=all\n\
print all available information associated with file\n\
descriptors in addition to paths\n\
+"
+#ifdef ENABLE_SECONTEXT
+"\
+ --secontext[=full]\n\
+ print SELinux contexts (type only unless 'full' is specified)\n\
+"
+#endif
+"\
\n\
Statistics:\n\
-c, --summary-only\n\
@@ -774,6 +792,14 @@
else if (nprocs > 1 && !outfname)
tprintf("[pid %5u] ", tcp->pid);
+#ifdef ENABLE_SECONTEXT
+ char *context;
+ if (!selinux_getpidcon(tcp, &context)) {
+ tprintf("[%s] ", context);
+ free(context);
+ }
+#endif
+
if (tflag_format) {
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
@@ -885,6 +911,9 @@
#if SUPPORTED_PERSONALITIES > 1
tcp->currpers = current_personality;
#endif
+#ifdef ENABLE_SECONTEXT
+ tcp->last_dirfd = AT_FDCWD;
+#endif
nprocs++;
debug_msg("new tcb for pid %d, active tcbs:%d",
tcp->pid, nprocs);
@@ -2027,6 +2056,9 @@
GETOPT_OUTPUT_SEPARATELY,
GETOPT_TS,
GETOPT_PIDNS_TRANSLATION,
+#ifdef ENABLE_SECONTEXT
+ GETOPT_SECONTEXT,
+#endif
GETOPT_QUAL_TRACE,
GETOPT_QUAL_ABBREV,
@@ -2082,6 +2114,9 @@
{ "failed-only", no_argument, 0, 'Z' },
{ "failing-only", no_argument, 0, 'Z' },
{ "seccomp-bpf", no_argument, 0, GETOPT_SECCOMP },
+#ifdef ENABLE_SECONTEXT
+ { "secontext", optional_argument, 0, GETOPT_SECONTEXT },
+#endif
{ "trace", required_argument, 0, GETOPT_QUAL_TRACE },
{ "abbrev", required_argument, 0, GETOPT_QUAL_ABBREV },
@@ -2307,6 +2342,17 @@
case GETOPT_SECCOMP:
seccomp_filtering = true;
break;
+#ifdef ENABLE_SECONTEXT
+ case GETOPT_SECONTEXT:
+ selinux_context = true;
+ if (optarg) {
+ if (!strcmp(optarg, "full"))
+ selinux_context_full = true;
+ else
+ error_opt_arg(c, lopt, optarg);
+ }
+ break;
+#endif
case GETOPT_QUAL_TRACE:
qualify_trace(optarg);
break;
@@ -2486,6 +2532,11 @@
if (!number_set_array_is_empty(decode_fd_set, 0))
error_msg("-y/--decode-fds has no effect "
"with -c/--summary-only");
+#ifdef ENABLE_SECONTEXT
+ if (selinux_context)
+ error_msg("--secontext has no effect with "
+ "-c/--summary-only");
+#endif
}
if (!outfname) {
Index: strace-5.7/strace.spec.in
===================================================================
--- strace-5.7.orig/strace.spec.in 2021-08-24 21:08:35.380312680 +0200
+++ strace-5.7/strace.spec.in 2021-08-24 21:08:43.255246027 +0200
@@ -29,11 +29,14 @@
# Install binutils-devel to enable symbol demangling.
%if 0%{?fedora} >= 20 || 0%{?centos} >= 6 || 0%{?rhel} >= 6
%define buildrequires_stacktrace BuildRequires: elfutils-devel binutils-devel
+%define buildrequires_selinux BuildRequires: libselinux-devel
%endif
%if 0%{?suse_version} >= 1100
%define buildrequires_stacktrace BuildRequires: libdw-devel binutils-devel
+%define buildrequires_selinux BuildRequires: libselinux-devel
%endif
%{?buildrequires_stacktrace}
+%{?buildrequires_selinux}
# OBS compatibility
%{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release}
Index: strace-5.7/syscall.c
===================================================================
--- strace-5.7.orig/syscall.c 2021-08-24 21:08:35.381312671 +0200
+++ strace-5.7/syscall.c 2021-08-24 21:08:43.256246018 +0200
@@ -23,6 +23,7 @@
#include "delay.h"
#include "retval.h"
#include <limits.h>
+#include <fcntl.h>
/* for struct iovec */
#include <sys/uio.h>
@@ -982,6 +983,10 @@
tcp->sys_func_rval = 0;
free_tcb_priv_data(tcp);
+#ifdef ENABLE_SECONTEXT
+ tcp->last_dirfd = AT_FDCWD;
+#endif
+
if (cflag)
tcp->ltime = tcp->stime;
}
Index: strace-5.7/tests/Makefile.am
===================================================================
--- strace-5.7.orig/tests/Makefile.am 2021-08-24 21:08:35.381312671 +0200
+++ strace-5.7/tests/Makefile.am 2021-08-24 21:08:43.257246010 +0200
@@ -28,6 +28,12 @@
-DTESTS_SIZEOF_LONG=$(SIZEOF_LONG)
AM_LDFLAGS = $(ARCH_MFLAGS)
+if HAVE_SELINUX_RUNTIME
+libselinux_LDADD = $(libselinux_LIBS)
+else
+libselinux_LDADD =
+endif
+
libtests_a_SOURCES = \
create_nl_socket.c \
create_tmpfile.c \
@@ -54,6 +60,8 @@
printxval-Xabbrev.c \
printxval-Xraw.c \
printxval-Xverbose.c \
+ secontext.c \
+ secontext.h \
signal2name.c \
skip_unavailable.c \
sprintrc.c \
@@ -76,7 +84,10 @@
include pure_executables.am
+include secontext.am
+
check_PROGRAMS = $(PURE_EXECUTABLES) \
+ $(secontext_EXECUTABLES) \
_newselect-P \
answer \
attach-f-p \
Index: strace-5.7/tests/access.c
===================================================================
--- strace-5.7.orig/tests/access.c 2021-08-24 21:08:35.381312671 +0200
+++ strace-5.7/tests/access.c 2021-08-24 21:08:43.257246010 +0200
@@ -10,9 +10,12 @@
#ifdef __NR_access
+# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -22,15 +25,27 @@
*/
create_and_enter_subdir("access_subdir");
+ char *my_secontext = SECONTEXT_PID_MY();
+
static const char sample[] = "access_sample";
+ (void) unlink(sample);
+ if (open(sample, O_CREAT|O_RDONLY, 0400) == -1)
+ perror_msg_and_fail("open: %s", sample);
long rc = syscall(__NR_access, sample, F_OK);
- printf("access(\"%s\", F_OK) = %ld %s (%m)\n",
- sample, rc, errno2name());
+ printf("%s%s(\"%s\"%s, F_OK) = %s\n",
+ my_secontext, "access",
+ sample, SECONTEXT_FILE(sample),
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink: %s", sample);
rc = syscall(__NR_access, sample, R_OK|W_OK|X_OK);
- printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
- sample, rc, errno2name());
+ printf("%s%s(\"%s\", R_OK|W_OK|X_OK) = %s\n",
+ my_secontext, "access",
+ sample,
+ sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests/chmod.c
===================================================================
--- strace-5.7.orig/tests/chmod.c 2021-08-24 21:08:35.382312663 +0200
+++ strace-5.7/tests/chmod.c 2021-08-24 21:08:43.257246010 +0200
@@ -16,6 +16,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -25,22 +27,33 @@
*/
create_and_enter_subdir("chmod_subdir");
- static const char fname[] = "chmod_test_file";
-
- if (open(fname, O_CREAT|O_RDONLY, 0400) < 0)
- perror_msg_and_fail("open");
-
- long rc = syscall(__NR_chmod, fname, 0600);
- printf("chmod(\"%s\", 0600) = %s\n", fname, sprintrc(rc));
-
- if (unlink(fname))
- perror_msg_and_fail("unlink");
-
- rc = syscall(__NR_chmod, fname, 051);
- printf("chmod(\"%s\", 051) = %s\n", fname, sprintrc(rc));
+ char *my_secontext = SECONTEXT_PID_MY();
- rc = syscall(__NR_chmod, fname, 004);
- printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc));
+ static const char sample[] = "chmod_test_file";
+ (void) unlink(sample);
+ if (open(sample, O_CREAT|O_RDONLY, 0400) < 0)
+ perror_msg_and_fail("open: %s", sample);
+
+ long rc = syscall(__NR_chmod, sample, 0600);
+ printf("%s%s(\"%s\"%s, 0600) = %s\n",
+ my_secontext, "chmod",
+ sample, SECONTEXT_FILE(sample),
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink: %s", sample);
+
+ rc = syscall(__NR_chmod, sample, 051);
+ printf("%s%s(\"%s\", 051) = %s\n",
+ my_secontext, "chmod",
+ sample,
+ sprintrc(rc));
+
+ rc = syscall(__NR_chmod, sample, 004);
+ printf("%s%s(\"%s\", 004) = %s\n",
+ my_secontext, "chmod",
+ sample,
+ sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests/execve.c
===================================================================
--- strace-5.7.orig/tests/execve.c 2021-08-24 21:08:35.382312663 +0200
+++ strace-5.7/tests/execve.c 2021-08-24 21:08:43.258246001 +0200
@@ -9,9 +9,12 @@
*/
#include "tests.h"
+#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
+#include "secontext.h"
+
static const char *errstr;
static int
@@ -52,9 +55,16 @@
char ** const tail_argv = tail_memdup(argv, sizeof(argv));
char ** const tail_envp = tail_memdup(envp, sizeof(envp));
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ (void) unlink(FILENAME);
+ if (open(FILENAME, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ char *FILENAME_secontext = SECONTEXT_FILE(FILENAME);
call_execve(FILENAME, tail_argv, tail_envp);
- printf("execve(\"%s\""
+ printf("%s%s(\"%s\"%s"
", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
#if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
@@ -62,7 +72,9 @@
", %p /* 5 vars, unterminated */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv)
#if VERBOSE
, q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
@@ -77,14 +89,16 @@
(void) q_envp; /* workaround for clang bug #33068 */
call_execve(FILENAME, tail_argv, tail_envp);
- printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
+ printf("%s%s(\"%s\"%s, [\"%s\", \"%s\", \"%s\"]"
#if VERBOSE
", [\"%s\", \"%s\"]"
#else
", %p /* 2 vars */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[0], q_argv[1], q_argv[2]
#if VERBOSE
, q_envp[0], q_envp[1]
#else
@@ -93,14 +107,16 @@
, errstr);
call_execve(FILENAME, tail_argv + 2, tail_envp + 1);
- printf("execve(\"%s\", [\"%s\"]"
+ printf("%s%s(\"%s\"%s, [\"%s\"]"
#if VERBOSE
", [\"%s\"]"
#else
", %p /* 1 var */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[2]
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[2]
#if VERBOSE
, q_envp[1]
#else
@@ -113,13 +129,15 @@
*empty = NULL;
call_execve(FILENAME, empty, empty);
- printf("execve(\"%s\", []"
+ printf("%s%s(\"%s\"%s, []"
#if VERBOSE
", []"
#else
", %p /* 0 vars */"
#endif
- ") = %s\n", Q_FILENAME
+ ") = %s\n",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext
#if !VERBOSE
, empty
#endif
@@ -143,7 +161,10 @@
a[i] = b[i] = NULL;
call_execve(FILENAME, a, b);
- printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
+ printf("%s%s(\"%s\"%s, [\"%.*s\"...",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ DEFAULT_STRLEN, a[0]);
for (i = 1; i < DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
#if VERBOSE
@@ -162,7 +183,10 @@
printf(") = %s\n", errstr);
call_execve(FILENAME, a + 1, b + 1);
- printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
+ printf("%s%s(\"%s\"%s, [\"%s\"",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ a[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
#if VERBOSE
@@ -175,12 +199,17 @@
#endif
printf(") = %s\n", errstr);
+ if (unlink(FILENAME))
+ perror_msg_and_fail("unlink");
+
call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault);
- printf("execve(\"%s\", NULL, %p) = %s\n",
+ printf("%s%s(\"%s\", NULL, %p) = %s\n",
+ my_secontext, "execve",
Q_FILENAME, efault, errstr);
call_execve(FILENAME, efault, NULL);
- printf("execve(\"%s\", %p, NULL) = %s\n",
+ printf("%s%s(\"%s\", %p, NULL) = %s\n",
+ my_secontext, "execve",
Q_FILENAME, efault, errstr);
leave_and_remove_subdir();
Index: strace-5.7/tests/execve.test
===================================================================
--- strace-5.7.orig/tests/execve.test 2021-08-24 21:08:35.382312663 +0200
+++ strace-5.7/tests/execve.test 2021-08-24 21:08:43.258246001 +0200
@@ -11,7 +11,7 @@
check_prog grep
run_prog > /dev/null
-run_strace -eexecve $args > "$EXP"
+run_strace -eexecve "$@" $args > "$EXP"
# Filter out execve() call made by strace.
grep -F test.execve < "$LOG" > "$OUT"
Index: strace-5.7/tests/execveat.c
===================================================================
--- strace-5.7.orig/tests/execveat.c 2021-08-24 21:08:35.383312654 +0200
+++ strace-5.7/tests/execveat.c 2021-08-24 21:08:43.259245993 +0200
@@ -13,9 +13,102 @@
#ifdef __NR_execveat
+# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
+static void
+tests_with_existing_file(void)
+{
+ /*
+ * Make sure the current workdir of the tracee
+ * is different from the current workdir of the tracer.
+ */
+ create_and_enter_subdir("execveat_subdir");
+
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ static const char sample[] = "execveat_sample";
+ (void) unlink(sample);
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+ static const char *argv[] = { sample, NULL };
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ long rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ sample, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ sample,
+ argv[0],
+ sprintrc(rc));
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\", [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample,
+ argv[0],
+ sprintrc(rc));
+
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_execveat, cwd_fd, sample_realpath, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ leave_and_remove_subdir();
+}
+
# define FILENAME "test.execveat\nfilename"
# define Q_FILENAME "test.execveat\\nfilename"
@@ -40,9 +133,10 @@
{
const char ** const tail_argv = tail_memdup(argv, sizeof(argv));
const char ** const tail_envp = tail_memdup(envp, sizeof(envp));
+ char *my_secontext = SECONTEXT_PID_MY();
syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\""
+ printf("%s%s(AT_FDCWD, \"%s\""
", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
# if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
@@ -50,6 +144,7 @@
", %p /* 5 vars, unterminated */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv),
# if VERBOSE
@@ -65,13 +160,14 @@
(void) q_envp; /* workaround for clang bug #33068 */
syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
# if VERBOSE
", [\"%s\", \"%s\"]"
# else
", %p /* 2 vars */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
# if VERBOSE
q_envp[0], q_envp[1],
@@ -81,13 +177,14 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, tail_argv + 2, tail_envp + 1, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"]"
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"]"
# if VERBOSE
", [\"%s\"]"
# else
", %p /* 1 var */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[2],
# if VERBOSE
q_envp[1],
@@ -101,13 +198,14 @@
*empty = NULL;
syscall(__NR_execveat, -100, FILENAME, empty, empty, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", []"
+ printf("%s%s(AT_FDCWD, \"%s\", []"
# if VERBOSE
", []"
# else
", %p /* 0 vars */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME,
# if !VERBOSE
empty,
@@ -132,7 +230,9 @@
a[i] = b[i] = NULL;
syscall(__NR_execveat, -100, FILENAME, a, b, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%.*s\"...",
+ my_secontext, "execveat",
+ Q_FILENAME, DEFAULT_STRLEN, a[0]);
for (i = 1; i < DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
# if VERBOSE
@@ -152,7 +252,9 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"", Q_FILENAME, a[1]);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"",
+ my_secontext, "execveat",
+ Q_FILENAME, a[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
# if VERBOSE
@@ -167,15 +269,19 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", NULL, %p"
+ printf("%s%s(AT_FDCWD, \"%s\", NULL, %p"
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, efault, errno2name());
syscall(__NR_execveat, -100, FILENAME, efault, NULL, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", %p, NULL"
+ printf("%s%s(AT_FDCWD, \"%s\", %p, NULL"
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, efault, errno2name());
+ tests_with_existing_file();
+
puts("+++ exited with 0 +++");
return 0;
}
Index: strace-5.7/tests/faccessat.c
===================================================================
--- strace-5.7.orig/tests/faccessat.c 2021-08-24 21:08:35.383312654 +0200
+++ strace-5.7/tests/faccessat.c 2021-08-24 21:08:43.260245984 +0200
@@ -12,12 +12,16 @@
#ifdef __NR_faccessat
-# include "xmalloc.h"
# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
-# ifndef FD_PATH
+# include "secontext.h"
+# include "xmalloc.h"
+
+# ifdef FD_PATH
+# define YFLAG
+# else
# define FD_PATH ""
# endif
# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
@@ -43,11 +47,130 @@
return rc;
}
+# ifndef PATH_TRACING
+static void
+tests_with_existing_file(void)
+{
+ /*
+ * Make sure the current workdir of the tracee
+ * is different from the current workdir of the tracer.
+ */
+ create_and_enter_subdir("faccessat_subdir");
+
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ k_faccessat(-1, NULL, F_OK);
+ printf("%s%s(-1, NULL, F_OK) = %s\n",
+ my_secontext, "faccessat", errstr);
+
+ static const char sample[] = "faccessat_sample";
+ (void) unlink(sample);
+ int fd = open(sample, O_CREAT|O_RDONLY, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ k_faccessat(-100, sample, F_OK);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, F_OK) = %s\n",
+ my_secontext, "faccessat",
+ sample, sample_secontext,
+ errstr);
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ k_faccessat(-100, sample, F_OK);
+ printf("%s%s(AT_FDCWD, \"%s\", F_OK) = %s\n",
+ my_secontext, "faccessat",
+ sample,
+ errstr);
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ k_faccessat(cwd_fd, sample, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\", F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\", F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample,
+ errstr);
+
+ fd = open(sample, O_CREAT|O_RDONLY, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+
+ k_faccessat(cwd_fd, sample, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample, sample_secontext,
+ errstr);
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ k_faccessat(cwd_fd, sample_realpath, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample_realpath, sample_secontext,
+ errstr);
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ leave_and_remove_subdir();
+}
+# endif
+
int
main(void)
{
SKIP_IF_PROC_IS_UNAVAILABLE;
+# ifndef TEST_SECONTEXT
+
TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
char *unterminated_str = xasprintf("%p", unterminated);
const void *const efault = unterminated + 1;
@@ -120,10 +243,10 @@
k_faccessat(dirfds[dirfd_i].val,
paths[path_i].val,
modes[mode_i].val);
-# ifdef PATH_TRACING
+# ifdef PATH_TRACING
if (dirfds[dirfd_i].val == fd ||
paths[path_i].val == fd_path)
-# endif
+# endif
printf("faccessat(%s, %s, %s) = %s\n",
dirfds[dirfd_i].str,
paths[path_i].str,
@@ -133,6 +256,12 @@
}
}
+# endif /* !TEST_SECONTEXT */
+
+# ifndef PATH_TRACING
+ tests_with_existing_file();
+# endif
+
puts("+++ exited with 0 +++");
return 0;
}
Index: strace-5.7/tests/faccessat.test
===================================================================
--- strace-5.7.orig/tests/faccessat.test 2021-08-24 21:08:35.383312654 +0200
+++ strace-5.7/tests/faccessat.test 2021-08-24 21:08:43.260245984 +0200
@@ -15,5 +15,5 @@
run_strace -a23 --trace=faccessat "$@" $args > "$EXP"
# Filter out faccessat() calls made by ld.so and libc.
-sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
+sed -n '/faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
Index: strace-5.7/tests/fanotify_mark.c
===================================================================
--- strace-5.7.orig/tests/fanotify_mark.c 2021-08-24 21:07:01.122112055 +0200
+++ strace-5.7/tests/fanotify_mark.c 2021-08-24 21:08:43.261245976 +0200
@@ -3,7 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
* Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2020 The strace developers.
+ * Copyright (c) 2015-2021 The strace developers.
* All rights reserved.
*
* SPDX-License-Identifier: GPL-2.0-or-later
@@ -21,6 +21,8 @@
# include <unistd.h>
# include <sys/fanotify.h>
+# include "secontext.h"
+
# if XLAT_RAW
# define str_fan_mark_add "0x1"
# define str_fan_modify_ondir "0x40000002"
@@ -35,6 +37,7 @@
# define str_at_fdcwd "AT_FDCWD"
# endif
+# ifndef TEST_SECONTEXT
/* Performs fanotify_mark call via the syscall interface. */
static void
do_call(kernel_ulong_t fd, kernel_ulong_t flags, const char *flags_str,
@@ -44,18 +47,18 @@
long rc;
rc = syscall(__NR_fanotify_mark, fd, flags,
-# if (LONG_MAX > INT_MAX) \
- || (defined __x86_64__ && defined __ILP32__) \
- || defined LINUX_MIPSN32
+# if (LONG_MAX > INT_MAX) \
+ || (defined __x86_64__ && defined __ILP32__) \
+ || defined LINUX_MIPSN32
mask,
-# else
+# else
/* arch/parisc/kernel/sys_parisc32.c, commit ab8a261b */
-# ifdef HPPA
+# ifdef HPPA
LL_VAL_TO_PAIR((mask << 32) | (mask >> 32)),
-# else
+# else
LL_VAL_TO_PAIR(mask),
+# endif
# endif
-# endif
dirfd, path);
printf("fanotify_mark(%d, %s, %s, %s, %s) = %s\n",
@@ -68,12 +71,14 @@
const char *str;
};
-# define STR16 "0123456789abcdef"
-# define STR64 STR16 STR16 STR16 STR16
+# define STR16 "0123456789abcdef"
+# define STR64 STR16 STR16 STR16 STR16
+# endif /* !TEST_SECONTEXT */
int
main(void)
{
+# ifndef TEST_SECONTEXT
enum {
PATH1_SIZE = 64,
};
@@ -87,47 +92,47 @@
{ F8ILL_KULONG_MASK, "0" },
{ (kernel_ulong_t) 0xdec0deddefacec00ULL,
"0xefacec00"
-# if !XLAT_RAW
+# if !XLAT_RAW
" /* FAN_MARK_??? */"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xda7a105700000040ULL,
-# if XLAT_RAW
+# if XLAT_RAW
"0x40"
-# elif XLAT_VERBOSE
+# elif XLAT_VERBOSE
"0x40 /* FAN_MARK_IGNORED_SURV_MODIFY */"
-# else
+# else
"FAN_MARK_IGNORED_SURV_MODIFY"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xbadc0deddeadffffULL,
-# if XLAT_RAW || XLAT_VERBOSE
+# if XLAT_RAW || XLAT_VERBOSE
"0xdeadffff"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" /* "
-# endif
-# if !XLAT_RAW
+# endif
+# if !XLAT_RAW
"FAN_MARK_ADD|FAN_MARK_REMOVE|FAN_MARK_DONT_FOLLOW|"
"FAN_MARK_ONLYDIR|FAN_MARK_MOUNT|FAN_MARK_IGNORED_MASK|"
"FAN_MARK_IGNORED_SURV_MODIFY|FAN_MARK_FLUSH|"
"FAN_MARK_FILESYSTEM|0xdeadfe00"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" */"
-# endif
+# endif
},
};
static const struct strval64 masks[] = {
{ ARG_ULL_STR(0) },
{ 0xdeadfeedffffffffULL,
-# if XLAT_RAW || XLAT_VERBOSE
+# if XLAT_RAW || XLAT_VERBOSE
"0xdeadfeedffffffff"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" /* "
-# endif
-# if !XLAT_RAW
+# endif
+# if !XLAT_RAW
"FAN_ACCESS|"
"FAN_MODIFY|"
"FAN_ATTRIB|"
@@ -149,27 +154,27 @@
"FAN_ONDIR|"
"FAN_EVENT_ON_CHILD|"
"0xdeadfeedb7f0a000"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" */"
-# endif
+# endif
},
{ ARG_ULL_STR(0xffffffffb7f0a000)
-# if !XLAT_RAW
+# if !XLAT_RAW
" /* FAN_??? */"
-# endif
+# endif
},
};
static const struct strval dirfds[] = {
{ (kernel_ulong_t) 0xfacefeed00000001ULL, "1" },
{ (kernel_ulong_t) 0xdec0ded0ffffffffULL,
-# if XLAT_RAW
+# if XLAT_RAW
"-1"
-# elif XLAT_VERBOSE
+# elif XLAT_VERBOSE
"-1 /* FAN_NOFD */"
-# else
+# else
"FAN_NOFD"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xbadfacedffffff9cULL, str_at_fdcwd },
{ (kernel_ulong_t) 0xdefaced1beeff00dULL, "-1091571699" },
@@ -202,12 +207,6 @@
snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
bogus_path1 + PATH1_SIZE);
- rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
- -100, ".");
- printf("fanotify_mark(-1, %s, %s, %s, \".\") = %s\n",
- str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd,
- sprintrc(rc));
-
for (i = 0; i < ARRAY_SIZE(fds); i++) {
for (j = 0; j < ARRAY_SIZE(flags); j++) {
for (k = 0; k < ARRAY_SIZE(masks); k++) {
@@ -226,6 +225,40 @@
}
}
}
+# else /* TEST_SECONTEXT */
+ int rc;
+# endif
+ /*
+ * Test with AT_FDCWD.
+ */
+
+ char *my_secontext = SECONTEXT_PID_MY();
+ char path[] = ".";
+ char *path_secontext = SECONTEXT_FILE(path);
+
+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+ -100, path);
+ printf("%s%s(-1, %s, %s, %s, \"%s\"%s) = %s\n",
+ my_secontext, "fanotify_mark",
+ str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd,
+ path, path_secontext,
+ sprintrc(rc));
+
+ /*
+ * Test with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+ cwd_fd, path);
+ printf("%s%s(-1, %s, %s, %d%s, \"%s\"%s) = %s\n",
+ my_secontext, "fanotify_mark",
+ str_fan_mark_add, str_fan_modify_ondir,
+ cwd_fd, cwd_secontext,
+ path, path_secontext,
+ sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
Index: strace-5.7/tests/fchmod.c
===================================================================
--- strace-5.7.orig/tests/fchmod.c 2021-08-24 21:08:35.384312646 +0200
+++ strace-5.7/tests/fchmod.c 2021-08-24 21:08:43.261245976 +0200
@@ -18,6 +18,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -27,6 +29,8 @@
*/
create_and_enter_subdir("fchmod_subdir");
+ char *my_secontext = SECONTEXT_PID_MY();
+
static const char sample[] = "fchmod_sample_file";
(void) unlink(sample);
int fd = open(sample, O_CREAT|O_RDONLY, 0400);
@@ -37,16 +41,19 @@
char *sample_realpath = get_fd_path(fd);
# endif
+ const char *sample_secontext = SECONTEXT_FILE(sample);
long rc = syscall(__NR_fchmod, fd, 0600);
# ifdef YFLAG
- printf("fchmod(%d<%s>, 0600) = %s\n",
+ printf("%s%s(%d<%s>%s, 0600) = %s\n",
# else
- printf("fchmod(%d, 0600) = %s\n",
+ printf("%s%s(%d%s, 0600) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
if (unlink(sample))
@@ -54,26 +61,30 @@
rc = syscall(__NR_fchmod, fd, 051);
# ifdef YFLAG
- printf("fchmod(%d<%s (deleted)>, 051) = %s\n",
+ printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n",
# else
- printf("fchmod(%d, 051) = %s\n",
+ printf("%s%s(%d%s, 051) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
rc = syscall(__NR_fchmod, fd, 004);
# ifdef YFLAG
- printf("fchmod(%d<%s (deleted)>, 004) = %s\n",
+ printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n",
# else
- printf("fchmod(%d, 004) = %s\n",
+ printf("%s%s(%d%s, 004) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests/fchmodat.c
===================================================================
--- strace-5.7.orig/tests/fchmodat.c 2021-08-24 21:08:35.384312646 +0200
+++ strace-5.7/tests/fchmodat.c 2021-08-24 21:08:43.261245976 +0200
@@ -17,6 +17,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -26,26 +28,81 @@
*/
create_and_enter_subdir("fchmodat_subdir");
- static const char sample[] = "fchmodat_sample";
+ char *my_secontext = SECONTEXT_PID_MY();
+ static const char sample[] = "fchmodat_sample_file";
if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
perror_msg_and_fail("open");
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
long rc = syscall(__NR_fchmodat, -100, sample, 0600);
- printf("fchmodat(AT_FDCWD, \"%s\", 0600) = %s\n",
- sample, sprintrc(rc));
+ printf("%s%s(AT_FDCWD, \"%s\"%s, 0600) = %s\n",
+ my_secontext, "fchmodat",
+ sample, sample_secontext,
+ sprintrc(rc));
if (unlink(sample))
perror_msg_and_fail("unlink");
rc = syscall(__NR_fchmodat, -100, sample, 051);
- printf("fchmodat(AT_FDCWD, \"%s\", 051) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", 051) = %s\n",
+ my_secontext, "fchmodat",
sample, sprintrc(rc));
rc = syscall(__NR_fchmodat, -100, sample, 004);
- printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", 004) = %s\n",
+ my_secontext, "fchmodat",
sample, sprintrc(rc));
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400);
+ printf("%s%s(%d%s, \"%s\", 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample,
+ sprintrc(rc));
+
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400);
+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_fchmodat, cwd_fd, sample_realpath, 0400);
+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests/fchownat.c
===================================================================
--- strace-5.7.orig/tests/fchownat.c 2021-08-24 21:08:35.384312646 +0200
+++ strace-5.7/tests/fchownat.c 2021-08-24 21:08:43.262245968 +0200
@@ -17,6 +17,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -26,25 +28,86 @@
*/
create_and_enter_subdir("fchownat_subdir");
- static const char sample[] = "fchownat_sample";
+ char *my_secontext = SECONTEXT_PID_MY();
uid_t uid = geteuid();
uid_t gid = getegid();
- if (open(sample, O_RDONLY | O_CREAT, 0400) == -1)
+ static const char sample[] = "fchownat_sample";
+ int fd = open(sample, O_RDONLY | O_CREAT, 0400);
+ if (fd == -1)
perror_msg_and_fail("open");
+ close(fd);
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
long rc = syscall(__NR_fchownat, AT_FDCWD, sample, uid, gid, 0);
- printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = %s\n",
- sample, uid, gid, sprintrc(rc));
+ printf("%s%s(AT_FDCWD, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ sample, sample_secontext,
+ uid, gid, sprintrc(rc));
if (unlink(sample))
perror_msg_and_fail("unlink");
rc = syscall(__NR_fchownat, AT_FDCWD,
sample, -1, -1L, AT_SYMLINK_NOFOLLOW);
- printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n",
+ my_secontext, "fchownat",
sample, sprintrc(rc));
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\", %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample,
+ uid, gid,
+ sprintrc(rc));
+
+ fd = open(sample, O_RDONLY | O_CREAT, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+
+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ uid, gid,
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_fchownat, cwd_fd, sample_realpath, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ uid, gid,
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests/file_handle.c
===================================================================
--- strace-5.7.orig/tests/file_handle.c 2021-08-24 21:08:35.385312637 +0200
+++ strace-5.7/tests/file_handle.c 2021-08-24 21:08:43.263245959 +0200
@@ -21,6 +21,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
enum assert_rc {
ASSERT_NONE,
ASSERT_SUCCESS,
@@ -48,6 +50,7 @@
printf("...");
}
+# ifndef TEST_SECONTEXT
void
do_name_to_handle_at(kernel_ulong_t dirfd, const char *dirfd_str,
kernel_ulong_t pathname, const char *pathname_str,
@@ -129,6 +132,7 @@
printf("%s\n", sprintrc(rc));
}
+# endif /* !TEST_SECONTEXT */
struct strval {
kernel_ulong_t val;
@@ -141,12 +145,86 @@
int
main(void)
{
+ char *my_secontext = SECONTEXT_PID_MY();
enum {
PATH1_SIZE = 64,
};
static const kernel_ulong_t fdcwd =
(kernel_ulong_t) 0x87654321ffffff9cULL;
+
+ struct file_handle *handle =
+ tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ);
+ struct file_handle *handle_0 =
+ tail_alloc(sizeof(struct file_handle) + 0);
+ struct file_handle *handle_8 =
+ tail_alloc(sizeof(struct file_handle) + 8);
+ struct file_handle *handle_128 =
+ tail_alloc(sizeof(struct file_handle) + 128);
+ struct file_handle *handle_256 =
+ tail_alloc(sizeof(struct file_handle) + 256);
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
+
+ char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
+
+ const int flags = 0x400;
+ int mount_id;
+
+ handle_0->handle_bytes = 256;
+ handle_8->handle_bytes = 0;
+ handle_128->handle_bytes = 128;
+ handle_256->handle_bytes = 256;
+
+ fill_memory((char *) handle_128 + sizeof(struct file_handle), 128);
+ fill_memory((char *) handle_256 + sizeof(struct file_handle), 256);
+
+ snprintf(handle_0_addr, sizeof(handle_0_addr), "%p",
+ handle_0 + sizeof(struct file_handle));
+
+ handle->handle_bytes = 0;
+
+ char path[] = ".";
+ char *path_secontext = SECONTEXT_FILE(path);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags | 1) == -1);
+ if (EINVAL != errno)
+ perror_msg_and_skip("name_to_handle_at");
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0}, %p"
+ ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ &mount_id);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags) == -1);
+ if (EOVERFLOW != errno)
+ perror_msg_and_skip("name_to_handle_at");
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0 => %u}"
+ ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ handle->handle_bytes, &mount_id);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=%u"
+ ", handle_type=%d, f_handle=",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data(handle->f_handle, handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data(handle->f_handle, handle->handle_bytes);
+ int rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name());
+
+# ifndef TEST_SECONTEXT
static const struct strval dirfds[] = {
{ (kernel_ulong_t) 0xdeadca57badda7a1ULL, "-1159878751" },
{ (kernel_ulong_t) 0x12345678ffffff9cULL, "AT_FDCWD" },
@@ -171,29 +249,11 @@
};
static const char str64[] = STR64;
-
-
char *bogus_path1 = tail_memdup(str64, PATH1_SIZE);
char *bogus_path2 = tail_memdup(str64, sizeof(str64));
-
- struct file_handle *handle =
- tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ);
- struct file_handle *handle_0 =
- tail_alloc(sizeof(struct file_handle) + 0);
- struct file_handle *handle_8 =
- tail_alloc(sizeof(struct file_handle) + 8);
- struct file_handle *handle_128 =
- tail_alloc(sizeof(struct file_handle) + 128);
- struct file_handle *handle_256 =
- tail_alloc(sizeof(struct file_handle) + 256);
- TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
-
- char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
-
char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2];
char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2];
-
struct strval paths[] = {
{ (kernel_ulong_t) 0, "NULL" },
{ (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE),
@@ -229,62 +289,16 @@
(kernel_ulong_t) (uintptr_t) bogus_mount_id,
};
- const int flags = 0x400;
- int mount_id;
unsigned int i;
unsigned int j;
unsigned int k;
unsigned int l;
unsigned int m;
-
snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1);
snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
bogus_path1 + PATH1_SIZE);
- handle_0->handle_bytes = 256;
- handle_8->handle_bytes = 0;
- handle_128->handle_bytes = 128;
- handle_256->handle_bytes = 256;
-
- fill_memory((char *) handle_128 + sizeof(struct file_handle), 128);
- fill_memory((char *) handle_256 + sizeof(struct file_handle), 256);
-
- snprintf(handle_0_addr, sizeof(handle_0_addr), "%p",
- handle_0 + sizeof(struct file_handle));
-
- handle->handle_bytes = 0;
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags | 1) == -1);
- if (EINVAL != errno)
- perror_msg_and_skip("name_to_handle_at");
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0}, %p"
- ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", &mount_id);
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags) == -1);
- if (EOVERFLOW != errno)
- perror_msg_and_skip("name_to_handle_at");
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0 => %u}"
- ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n",
- handle->handle_bytes, &mount_id);
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags) == 0);
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u"
- ", handle_type=%d, f_handle=",
- handle->handle_bytes, handle->handle_type);
- print_handle_data(handle->f_handle, handle->handle_bytes);
- printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
-
- printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d"
- ", f_handle=", handle->handle_bytes, handle->handle_type);
- print_handle_data(handle->f_handle, handle->handle_bytes);
- int rc = syscall(__NR_open_by_handle_at, -1, handle,
- O_RDONLY | O_DIRECTORY);
- printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name());
-
for (i = 0; i < ARRAY_SIZE(dirfds); i++) {
for (j = 0; j < ARRAY_SIZE(paths); j++) {
for (k = 0; k < ARRAY_SIZE(name_handles); k++) {
@@ -320,6 +334,68 @@
}
}
}
+# endif
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ assert(syscall(__NR_name_to_handle_at, cwd_fd, path, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u, handle_type=%d"
+ ", f_handle=",
+ my_secontext, "name_to_handle_at",
+ cwd_fd, cwd_secontext,
+ path, path_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir(".."))
+ perror_msg_and_fail("chdir");
+
+ assert(syscall(__NR_name_to_handle_at, cwd_fd, cwd, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u"
+ ", handle_type=%d, f_handle=",
+ my_secontext, "name_to_handle_at",
+ cwd_fd, cwd_secontext,
+ cwd, cwd_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
puts("+++ exited with 0 +++");
return 0;
Index: strace-5.7/tests/gen_secontext.sh
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/gen_secontext.sh 2021-08-24 21:08:43.263245959 +0200
@@ -0,0 +1,72 @@
+#!/bin/sh -efu
+#
+# Copyright (c) 2021 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+usage()
+{
+ cat >&2 <<EOF
+Usage: $0 [<input>]
+
+Generate secontext files from <input> list.
+EOF
+ exit 1
+}
+
+if [ $# -eq 0 ]; then
+ input="${0%/*}/gen_tests.in"
+else
+ input="$1"
+ shift
+fi
+dir="$(dirname "$input")"
+[ $# -eq 0 ] || usage
+
+{
+ cat <<EOF
+# Generated by $0 from $input; do not edit.
+
+secontext_EXECUTABLES = \\
+EOF
+ sed -r -n 's/^([^#[:space:]]+--secontext(_full)?)[[:space:]].*/ \1 \\/p' < "$input"
+ cat <<EOF
+ #
+
+EOF
+ sed -r -n 's/-/_/g; s/^([^#[:space:]]+__secontext(_full)?)[[:space:]].*/\1_LDADD = \$(LDADD) \$(libselinux_LDADD)/p' < "$input"
+} > "$dir/secontext.am"
+
+sed -r -n 's/^([^#[:space:]]+--secontext)[[:space:]].*/\1/p' < "$input" |
+while read -r name; do {
+ cat <<-EOF > "$dir/$name.c"
+ /*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+ #include "tests.h"
+
+ #ifdef HAVE_SELINUX_RUNTIME
+
+ # define TEST_SECONTEXT
+ # include "${name%--secontext}.c"
+
+ #else
+
+ SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+ #endif
+ EOF
+} < /dev/null; done
+
+sed -r -n 's/^([^#[:space:]]+--secontext_full)[[:space:]].*/\1/p' < "$input" |
+while read -r name; do {
+ cat <<-EOF > "$dir/$name.c"
+ #define PRINT_SECONTEXT_FULL
+ #include "${name%_full}.c"
+ EOF
+} < /dev/null; done
Index: strace-5.7/tests/gen_tests.in
===================================================================
--- strace-5.7.orig/tests/gen_tests.in 2021-08-24 21:08:35.385312637 +0200
+++ strace-5.7/tests/gen_tests.in 2021-08-24 21:08:43.263245959 +0200
@@ -10,6 +10,8 @@
accept -a22
accept4 -a37
access -a30 --trace-path=access_sample
+access--secontext -a30 --secontext --trace-path=access_sample -e trace=access
+access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access
acct -a20
add_key -a30 -s12
adjtimex -a15
@@ -24,6 +26,8 @@
bpf-v -a20 -v -e trace=bpf
btrfs +ioctl.test
chmod -a28
+chmod--secontext -a28 --secontext -e trace=chmod
+chmod--secontext_full -a28 --secontext=full -e trace=chmod
chown -a28
chown32 -a31
chroot -a24
@@ -71,25 +75,43 @@
epoll_pwait
epoll_wait -a26
erestartsys -a34 -e signal=none -e trace=recvfrom
+execve--secontext +execve.test --secontext
+execve--secontext_full +execve.test --secontext=full
execveat
+execveat--secontext --secontext --trace=execveat
+execveat--secontext_full --secontext=full --trace=execveat
execveat-v -v -e trace=execveat
+faccessat--secontext +faccessat.test -a24 --secontext
+faccessat--secontext_full +faccessat.test -a24 --secontext=full
faccessat-P -a23 --trace=faccessat -P /dev/full
faccessat-y +faccessat.test -a24 -y
+faccessat-y--secontext +faccessat.test -a24 -y --secontext
+faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full
faccessat-yy +faccessat.test -a24 -yy
fadvise64_64 +fadvise64.test
fallocate -a18
fanotify_init
fanotify_mark -a32
+fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark
+fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark
fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark
fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark
fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark
fchdir -a11
fchmod -a15
+fchmod--secontext -a15 --secontext -e trace=fchmod
+fchmod--secontext_full -a15 --secontext=full -e trace=fchmod
fchmod-y -y -e trace=fchmod
+fchmod-y--secontext -a15 -y --secontext -e trace=fchmod
+fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod
fchmodat
+fchmodat--secontext --secontext -e trace=fchmodat
+fchmodat--secontext_full --secontext=full -e trace=fchmodat
fchown -a16
fchown32 -a18
fchownat
+fchownat--secontext --secontext -e trace=fchownat
+fchownat--secontext_full --secontext=full -e trace=fchownat
fcntl -a8
fcntl--pidns-translation test_pidns -a8 -e trace=fcntl
fcntl64 -a8
@@ -97,6 +119,8 @@
fdatasync -a14
file_handle -e trace=name_to_handle_at,open_by_handle_at
file_ioctl +ioctl.test
+file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at
+file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at
filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
filter_seccomp-flag ../$NAME
finit_module -a25
@@ -295,6 +319,8 @@
lchown32 -a32
link
linkat
+linkat--secontext --secontext -e trace=linkat
+linkat--secontext_full --secontext=full -e trace=linkat
lookup_dcookie -a27
lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
@@ -434,9 +460,13 @@
oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full
oldstat -a32 -v -P stat.sample -P /dev/full
open -a30 -P $NAME.sample
+open--secontext -a30 -P open.sample --secontext --trace=open
+open--secontext_full -a30 -P open.sample --secontext=full --trace=open
open_tree -a30 -y
open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree
openat -a36 -P $NAME.sample
+openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat
+openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat
openat2 -a35
openat2-Xabbrev --trace=openat2 -a35 -Xabbrev
openat2-Xraw --trace=openat2 -a32 -Xraw
Index: strace-5.7/tests/linkat.c
===================================================================
--- strace-5.7.orig/tests/linkat.c 2021-08-24 21:08:35.385312637 +0200
+++ strace-5.7/tests/linkat.c 2021-08-24 21:08:43.264245951 +0200
@@ -10,8 +10,14 @@
#ifdef __NR_linkat
+# include <fcntl.h>
# include <stdio.h>
+# include <stdlib.h>
# include <unistd.h>
+# include <sys/stat.h>
+
+# include "secontext.h"
+# include "xmalloc.h"
int
main(void)
@@ -27,18 +33,158 @@
const long fd_old = (long) 0xdeadbeefffffffffULL;
const long fd_new = (long) 0xdeadbeeffffffffeULL;
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ (void) unlink(sample_1);
+ (void) unlink(sample_2);
+
long rc = syscall(__NR_linkat, fd_old, sample_1, fd_new, sample_2, 0);
- printf("linkat(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n",
+ printf("%s%s(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n",
+ my_secontext, "linkat",
(int) fd_old, sample_1, (int) fd_new, sample_2,
rc, errno2name());
rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, -1L);
- printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
+ printf("%s%s(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
+ my_secontext, "linkat",
"AT_FDCWD", sample_1, "AT_FDCWD", sample_2,
"AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
"|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
rc, errno2name());
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ int fd_sample_1 = open(sample_1, O_RDONLY | O_CREAT, 0400);
+ if (fd_sample_1 < 0)
+ perror_msg_and_fail("open");
+ if (close(fd_sample_1))
+ perror_msg_and_fail("close");
+
+ char *sample_1_secontext = SECONTEXT_FILE(sample_1);
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ const char *sample_2_secontext = sample_1_secontext;
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ int fd_sample_2 = open(sample_2, O_RDONLY | O_CREAT, 0400);
+ if (fd_sample_2 < 0)
+ perror_msg_and_fail("open");
+ if (close(fd_sample_2))
+ perror_msg_and_fail("close");
+
+ free(sample_1_secontext);
+ update_secontext_type(sample_1, "default_t");
+ sample_1_secontext = SECONTEXT_FILE(sample_1);
+ sample_2_secontext = sample_1_secontext;
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ if (unlink(sample_2))
+ perror_msg_and_fail("unlink: %s", sample_2);
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int dfd_old = get_dir_fd(".");
+ char *cwd = get_fd_path(dfd_old);
+ char *dfd_old_secontext = SECONTEXT_FILE(".");
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0);
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ if (unlink(sample_2))
+ perror_msg_and_fail("unlink: %s", sample_2);
+
+ static const char new_dir[] = "new";
+ char *new_sample_2 = xasprintf("%s/%s", new_dir, sample_2);
+
+ (void) unlink(new_sample_2);
+ (void) rmdir(new_dir);
+
+ if (mkdir(new_dir, 0700))
+ perror_msg_and_fail("mkdir");
+ char *new_dir_realpath = xasprintf("%s/%s", cwd, new_dir);
+ char *new_dir_secontext = SECONTEXT_FILE(new_dir);
+ int dfd_new = get_dir_fd(new_dir);
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ dfd_new, new_dir_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ dfd_new, new_dir_secontext,
+ sample_2, SECONTEXT_FILE(new_sample_2),
+ sprintrc(rc));
+
+ char *new_sample_2_realpath = xasprintf("%s/%s", new_dir_realpath, sample_2);
+
+ /* dfd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, new_sample_2_realpath, 0);
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ new_sample_2_realpath, SECONTEXT_FILE(new_sample_2_realpath),
+ sprintrc(rc));
+
+ if (fchdir(dfd_old))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample_1))
+ perror_msg_and_fail("unlink: %s", sample_1);
+ if (unlink(new_sample_2))
+ perror_msg_and_fail("unlink: %s", new_sample_2);
+ if (rmdir(new_dir))
+ perror_msg_and_fail("rmdir: %s", new_dir);
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests/open.c
===================================================================
--- strace-5.7.orig/tests/open.c 2021-08-24 21:08:35.386312629 +0200
+++ strace-5.7/tests/open.c 2021-08-24 21:08:43.264245951 +0200
@@ -15,6 +15,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -25,10 +27,12 @@
create_and_enter_subdir("open_subdir");
static const char sample[] = "open.sample";
+ char *my_secontext = SECONTEXT_PID_MY();
long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400);
- printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
- sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "open",
+ sample, sprintrc(fd), SECONTEXT_FILE(sample));
if (fd != -1) {
close(fd);
@@ -36,16 +40,18 @@
perror_msg_and_fail("unlink");
fd = syscall(__NR_open, sample, O_RDONLY);
- printf("open(\"%s\", O_RDONLY) = %s\n", sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_RDONLY) = %s\n",
+ my_secontext, "open", sample, sprintrc(fd));
fd = syscall(__NR_open, sample, O_WRONLY|O_NONBLOCK|0x80000000);
- printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n",
- sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n",
+ my_secontext, "open", sample, sprintrc(fd));
}
# ifdef O_TMPFILE
fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600);
- printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+ printf("%s%s(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+ my_secontext, "open",
sample, sprintrc(fd));
# endif /* O_TMPFILE */
Index: strace-5.7/tests/openat.c
===================================================================
--- strace-5.7.orig/tests/openat.c 2021-08-24 21:08:35.386312629 +0200
+++ strace-5.7/tests/openat.c 2021-08-24 21:08:43.264245951 +0200
@@ -15,6 +15,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
# ifdef O_TMPFILE
/* The kernel & C libraries often inline O_DIRECTORY. */
# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY)
@@ -26,10 +28,12 @@
static void
test_mode_flag(unsigned int mode_val, const char *mode_str,
- unsigned int flag_val, const char *flag_str)
+ unsigned int flag_val, const char *flag_str,
+ const char *my_secontext)
{
long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0);
- printf("openat(-1, \"%s\", %s%s%s%s) = %s\n",
+ printf("%s%s(-1, \"%s\", %s%s%s%s) = %s\n",
+ my_secontext, "openat",
sample, mode_str,
flag_val ? "|" : "", flag_str,
flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "",
@@ -45,20 +49,7 @@
*/
create_and_enter_subdir("openat_subdir");
- long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
- printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
- sample, sprintrc(fd));
-
- if (fd != -1) {
- close(fd);
- if (unlink(sample) == -1)
- perror_msg_and_fail("unlink");
-
- fd = syscall(__NR_openat, -100, sample, O_RDONLY);
- printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %s\n",
- sample, sprintrc(fd));
- }
-
+ char *my_secontext = SECONTEXT_PID_MY();
struct {
unsigned int val;
const char *str;
@@ -105,7 +96,73 @@
for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m)
for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f)
test_mode_flag(modes[m].val, modes[m].str,
- flags[f].val, flags[f].str);
+ flags[f].val, flags[f].str,
+ my_secontext);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ (void) unlink(sample);
+ long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * File context in openat() is not displayed because file doesn't exist
+ * yet, but is displayed in return value since the file got created.
+ */
+ printf("%s%s(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "openat",
+ sample,
+ sprintrc(fd), sample_secontext);
+
+ close(fd);
+
+ fd = syscall(__NR_openat, -100, sample, O_RDONLY);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, O_RDONLY) = %s%s\n",
+ my_secontext, "openat",
+ sample, sample_secontext,
+ sprintrc(fd), sample_secontext);
+ if (fd != -1) {
+ close(fd);
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+ }
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY|O_CREAT, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("openat");
+ close(fd);
+
+ /*
+ * File context in openat() is not displayed because file doesn't exist
+ * yet, but is displayed in return value since the file got created.
+ */
+ printf("%s%s(%d%s, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "openat",
+ cwd_fd, cwd_secontext,
+ sample,
+ sprintrc(fd), sample_secontext);
+
+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY);
+ printf("%s%s(%d%s, \"%s\"%s, O_RDONLY) = %s%s\n",
+ my_secontext, "openat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ sprintrc(fd), sample_secontext);
+ if (fd != -1) {
+ close(fd);
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+ }
leave_and_remove_subdir();
Index: strace-5.7/tests/options-syntax.test
===================================================================
--- strace-5.7.orig/tests/options-syntax.test 2021-08-24 21:08:35.386312629 +0200
+++ strace-5.7/tests/options-syntax.test 2021-08-24 21:08:43.265245942 +0200
@@ -2,14 +2,16 @@
#
# Check strace options syntax.
#
-# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2020 The strace developers.
+# Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
+# Copyright (c) 2016-2021 The strace developers.
# All rights reserved.
#
# SPDX-License-Identifier: GPL-2.0-or-later
. "${srcdir=.}/syntax.sh"
+compiled_with_secontext=$(get_config_option ENABLE_SECONTEXT "y")
+
check_e "Invalid process id: '0'" -p 0
check_e "Invalid process id: '0'" --attach=0
check_e "Invalid process id: '-42'" -p -42
@@ -46,6 +48,8 @@
check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$
check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$
check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$
+[ -z "$compiled_with_secontext" ] ||
+ check_h "invalid --secontext argument: 'ss'" --secontext=ss
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$
@@ -281,6 +285,11 @@
$STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTyzZ true
+ if [ -n "$compiled_with_secontext" ]; then
+ check_e "--secontext has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" -u :nosuchuser: -c --secontext true
+ fi
+
for c in --output-separately -A/--output-append-mode; do
check_e "$c has no effect without -o/--output
$STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true
Index: strace-5.7/tests/secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/secontext.c 2021-08-24 21:08:43.265245942 +0200
@@ -0,0 +1,201 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# include <assert.h>
+# include <errno.h>
+# include <stdlib.h>
+# include <string.h>
+# include <unistd.h>
+# include <selinux/selinux.h>
+
+# include "xmalloc.h"
+
+# define TEST_SECONTEXT
+# include "secontext.h"
+
+static char *
+secontext_format(char *context, const char *fmt)
+ ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC;
+
+static char *
+secontext_format(char *context, const char *fmt)
+{
+ int saved_errno = errno;
+ char *res = context ? xasprintf(fmt, context) : xstrdup("");
+ free(context);
+ errno = saved_errno;
+ return res;
+}
+
+# define FORMAT_SPACE_BEFORE(string) secontext_format(string, " [%s]")
+# define FORMAT_SPACE_AFTER(string) secontext_format(string, "[%s] ")
+
+static char *
+strip_trailing_newlines(char *context)
+{
+ /*
+ * On the CI at least, the context may have a trailing \n,
+ * let's remove it just in case.
+ */
+ size_t len = strlen(context);
+ for (; len > 0; --len) {
+ if (context[len - 1] != '\n')
+ break;
+ }
+ context[len] = '\0';
+ return context;
+}
+
+static char *
+raw_secontext_full_file(const char *filename)
+{
+ int saved_errno = errno;
+ char *full_secontext = NULL;
+ char *secontext;
+
+ if (getfilecon(filename, &secontext) >= 0) {
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
+ freecon(secontext);
+ }
+ errno = saved_errno;
+ return full_secontext;
+}
+
+static char *
+raw_secontext_short_file(const char *filename)
+{
+ int saved_errno = errno;
+
+ char *ctx = raw_secontext_full_file(filename);
+ if (ctx == NULL)
+ return ctx;
+
+ char *saveptr = NULL;
+ const char *token;
+ unsigned int i;
+
+ char *ctx_copy = xstrdup(ctx);
+ char *context = NULL;
+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), i++) {
+ if (i == 2) {
+ context = xstrdup(token);
+ break;
+ }
+ }
+ if (context == NULL)
+ context = xstrdup(ctx);
+ free(ctx_copy);
+ free(ctx);
+
+ errno = saved_errno;
+ return context;
+}
+
+static char *
+raw_secontext_full_pid(pid_t pid)
+{
+ int saved_errno = errno;
+ char *full_secontext = NULL;
+ char *secontext;
+
+ if (getpidcon(pid, &secontext) == 0) {
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
+ freecon(secontext);
+ }
+ errno = saved_errno;
+ return full_secontext;
+}
+
+static char *
+raw_secontext_short_pid(pid_t pid)
+{
+ int saved_errno = errno;
+
+ char *ctx = raw_secontext_full_pid(pid);
+ if (ctx == NULL)
+ return ctx;
+
+ char *saveptr = NULL;
+ const char *token;
+ int i;
+
+ char *ctx_copy = xstrdup(ctx);
+ char *context = NULL;
+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), i++) {
+ if (i == 2) {
+ context = xstrdup(token);
+ break;
+ }
+ }
+ if (context == NULL)
+ context = xstrdup(ctx);
+ free(ctx_copy);
+ free(ctx);
+
+ errno = saved_errno;
+ return context;
+}
+
+char *
+secontext_full_file(const char *filename)
+{
+ return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename));
+}
+
+char *
+secontext_full_pid(pid_t pid)
+{
+ return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid));
+}
+
+char *
+secontext_short_file(const char *filename)
+{
+ return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename));
+}
+
+char *
+secontext_short_pid(pid_t pid)
+{
+ return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid));
+}
+
+void
+update_secontext_type(const char *file, const char *newtype)
+{
+ char *ctx = raw_secontext_full_file(file);
+ if (ctx == NULL)
+ return;
+
+ char *saveptr = NULL;
+ char *token;
+ int field;
+ char *split[4];
+
+ for (token = strtok_r(ctx, ":", &saveptr), field = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), field++) {
+ assert(field < 4);
+ split[field] = token;
+ }
+ assert(field == 4);
+
+ char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1],
+ newtype, split[3]);
+
+ (void) setfilecon(file, newcontext);
+
+ free(newcontext);
+ free(ctx);
+}
+
+#endif /* HAVE_SELINUX_RUNTIME */
Index: strace-5.7/tests/secontext.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/secontext.h 2021-08-24 21:08:43.265245942 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "xmalloc.h"
+#include <unistd.h>
+
+#if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME
+
+void update_secontext_type(const char *file, const char *newtype);
+
+# ifdef PRINT_SECONTEXT_FULL
+
+char *secontext_full_file(const char *) ATTRIBUTE_MALLOC;
+char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC;
+
+# define SECONTEXT_FILE(filename) secontext_full_file(filename)
+# define SECONTEXT_PID(pid) secontext_full_pid(pid)
+
+# else
+
+char *secontext_short_file(const char *) ATTRIBUTE_MALLOC;
+char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC;
+
+# define SECONTEXT_FILE(filename) secontext_short_file(filename)
+# define SECONTEXT_PID(pid) secontext_short_pid(pid)
+
+# endif
+
+#else
+
+static inline void
+update_secontext_type(const char *file, const char *newtype)
+{
+}
+
+# define SECONTEXT_FILE(filename) xstrdup("")
+# define SECONTEXT_PID(pid) xstrdup("")
+
+#endif
+
+#define SECONTEXT_PID_MY() SECONTEXT_PID(getpid())
Index: strace-5.7/tests/strace-V.test
===================================================================
--- strace-5.7.orig/tests/strace-V.test 2021-08-24 21:08:35.387312620 +0200
+++ strace-5.7/tests/strace-V.test 2021-08-24 21:08:43.266245934 +0200
@@ -33,7 +33,9 @@
;;
esac
-features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
+option_secontext=$(get_config_option ENABLE_SECONTEXT " secontext")
+
+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}${option_secontext}"
[ -n "$features" ] || features=" (none)"
cat > "$EXP" << __EOF__
Index: strace-5.7/tests-m32/Makefile.am
===================================================================
--- strace-5.7.orig/tests-m32/Makefile.am 2021-08-24 21:08:35.387312620 +0200
+++ strace-5.7/tests-m32/Makefile.am 2021-08-24 21:08:43.266245934 +0200
@@ -28,6 +28,12 @@
-DTESTS_SIZEOF_LONG=$(SIZEOF_LONG)
AM_LDFLAGS = $(ARCH_MFLAGS)
+if HAVE_SELINUX_RUNTIME
+libselinux_LDADD = $(libselinux_LIBS)
+else
+libselinux_LDADD =
+endif
+
libtests_a_SOURCES = \
create_nl_socket.c \
create_tmpfile.c \
@@ -54,6 +60,8 @@
printxval-Xabbrev.c \
printxval-Xraw.c \
printxval-Xverbose.c \
+ secontext.c \
+ secontext.h \
signal2name.c \
skip_unavailable.c \
sprintrc.c \
@@ -76,7 +84,10 @@
include pure_executables.am
+include secontext.am
+
check_PROGRAMS = $(PURE_EXECUTABLES) \
+ $(secontext_EXECUTABLES) \
_newselect-P \
answer \
attach-f-p \
Index: strace-5.7/tests-m32/access.c
===================================================================
--- strace-5.7.orig/tests-m32/access.c 2021-08-24 21:08:35.387312620 +0200
+++ strace-5.7/tests-m32/access.c 2021-08-24 21:08:43.266245934 +0200
@@ -10,9 +10,12 @@
#ifdef __NR_access
+# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -22,15 +25,27 @@
*/
create_and_enter_subdir("access_subdir");
+ char *my_secontext = SECONTEXT_PID_MY();
+
static const char sample[] = "access_sample";
+ (void) unlink(sample);
+ if (open(sample, O_CREAT|O_RDONLY, 0400) == -1)
+ perror_msg_and_fail("open: %s", sample);
long rc = syscall(__NR_access, sample, F_OK);
- printf("access(\"%s\", F_OK) = %ld %s (%m)\n",
- sample, rc, errno2name());
+ printf("%s%s(\"%s\"%s, F_OK) = %s\n",
+ my_secontext, "access",
+ sample, SECONTEXT_FILE(sample),
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink: %s", sample);
rc = syscall(__NR_access, sample, R_OK|W_OK|X_OK);
- printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
- sample, rc, errno2name());
+ printf("%s%s(\"%s\", R_OK|W_OK|X_OK) = %s\n",
+ my_secontext, "access",
+ sample,
+ sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests-m32/chmod.c
===================================================================
--- strace-5.7.orig/tests-m32/chmod.c 2021-08-24 21:08:35.387312620 +0200
+++ strace-5.7/tests-m32/chmod.c 2021-08-24 21:08:43.267245925 +0200
@@ -16,6 +16,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -25,22 +27,33 @@
*/
create_and_enter_subdir("chmod_subdir");
- static const char fname[] = "chmod_test_file";
-
- if (open(fname, O_CREAT|O_RDONLY, 0400) < 0)
- perror_msg_and_fail("open");
-
- long rc = syscall(__NR_chmod, fname, 0600);
- printf("chmod(\"%s\", 0600) = %s\n", fname, sprintrc(rc));
-
- if (unlink(fname))
- perror_msg_and_fail("unlink");
-
- rc = syscall(__NR_chmod, fname, 051);
- printf("chmod(\"%s\", 051) = %s\n", fname, sprintrc(rc));
+ char *my_secontext = SECONTEXT_PID_MY();
- rc = syscall(__NR_chmod, fname, 004);
- printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc));
+ static const char sample[] = "chmod_test_file";
+ (void) unlink(sample);
+ if (open(sample, O_CREAT|O_RDONLY, 0400) < 0)
+ perror_msg_and_fail("open: %s", sample);
+
+ long rc = syscall(__NR_chmod, sample, 0600);
+ printf("%s%s(\"%s\"%s, 0600) = %s\n",
+ my_secontext, "chmod",
+ sample, SECONTEXT_FILE(sample),
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink: %s", sample);
+
+ rc = syscall(__NR_chmod, sample, 051);
+ printf("%s%s(\"%s\", 051) = %s\n",
+ my_secontext, "chmod",
+ sample,
+ sprintrc(rc));
+
+ rc = syscall(__NR_chmod, sample, 004);
+ printf("%s%s(\"%s\", 004) = %s\n",
+ my_secontext, "chmod",
+ sample,
+ sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests-m32/execve.c
===================================================================
--- strace-5.7.orig/tests-m32/execve.c 2021-08-24 21:08:35.388312612 +0200
+++ strace-5.7/tests-m32/execve.c 2021-08-24 21:08:43.267245925 +0200
@@ -9,9 +9,12 @@
*/
#include "tests.h"
+#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
+#include "secontext.h"
+
static const char *errstr;
static int
@@ -52,9 +55,16 @@
char ** const tail_argv = tail_memdup(argv, sizeof(argv));
char ** const tail_envp = tail_memdup(envp, sizeof(envp));
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ (void) unlink(FILENAME);
+ if (open(FILENAME, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ char *FILENAME_secontext = SECONTEXT_FILE(FILENAME);
call_execve(FILENAME, tail_argv, tail_envp);
- printf("execve(\"%s\""
+ printf("%s%s(\"%s\"%s"
", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
#if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
@@ -62,7 +72,9 @@
", %p /* 5 vars, unterminated */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv)
#if VERBOSE
, q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
@@ -77,14 +89,16 @@
(void) q_envp; /* workaround for clang bug #33068 */
call_execve(FILENAME, tail_argv, tail_envp);
- printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
+ printf("%s%s(\"%s\"%s, [\"%s\", \"%s\", \"%s\"]"
#if VERBOSE
", [\"%s\", \"%s\"]"
#else
", %p /* 2 vars */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[0], q_argv[1], q_argv[2]
#if VERBOSE
, q_envp[0], q_envp[1]
#else
@@ -93,14 +107,16 @@
, errstr);
call_execve(FILENAME, tail_argv + 2, tail_envp + 1);
- printf("execve(\"%s\", [\"%s\"]"
+ printf("%s%s(\"%s\"%s, [\"%s\"]"
#if VERBOSE
", [\"%s\"]"
#else
", %p /* 1 var */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[2]
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[2]
#if VERBOSE
, q_envp[1]
#else
@@ -113,13 +129,15 @@
*empty = NULL;
call_execve(FILENAME, empty, empty);
- printf("execve(\"%s\", []"
+ printf("%s%s(\"%s\"%s, []"
#if VERBOSE
", []"
#else
", %p /* 0 vars */"
#endif
- ") = %s\n", Q_FILENAME
+ ") = %s\n",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext
#if !VERBOSE
, empty
#endif
@@ -143,7 +161,10 @@
a[i] = b[i] = NULL;
call_execve(FILENAME, a, b);
- printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
+ printf("%s%s(\"%s\"%s, [\"%.*s\"...",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ DEFAULT_STRLEN, a[0]);
for (i = 1; i < DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
#if VERBOSE
@@ -162,7 +183,10 @@
printf(") = %s\n", errstr);
call_execve(FILENAME, a + 1, b + 1);
- printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
+ printf("%s%s(\"%s\"%s, [\"%s\"",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ a[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
#if VERBOSE
@@ -175,12 +199,17 @@
#endif
printf(") = %s\n", errstr);
+ if (unlink(FILENAME))
+ perror_msg_and_fail("unlink");
+
call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault);
- printf("execve(\"%s\", NULL, %p) = %s\n",
+ printf("%s%s(\"%s\", NULL, %p) = %s\n",
+ my_secontext, "execve",
Q_FILENAME, efault, errstr);
call_execve(FILENAME, efault, NULL);
- printf("execve(\"%s\", %p, NULL) = %s\n",
+ printf("%s%s(\"%s\", %p, NULL) = %s\n",
+ my_secontext, "execve",
Q_FILENAME, efault, errstr);
leave_and_remove_subdir();
Index: strace-5.7/tests-m32/execve.test
===================================================================
--- strace-5.7.orig/tests-m32/execve.test 2021-08-24 21:08:35.388312612 +0200
+++ strace-5.7/tests-m32/execve.test 2021-08-24 21:08:43.268245917 +0200
@@ -11,7 +11,7 @@
check_prog grep
run_prog > /dev/null
-run_strace -eexecve $args > "$EXP"
+run_strace -eexecve "$@" $args > "$EXP"
# Filter out execve() call made by strace.
grep -F test.execve < "$LOG" > "$OUT"
Index: strace-5.7/tests-m32/execveat.c
===================================================================
--- strace-5.7.orig/tests-m32/execveat.c 2021-08-24 21:08:35.388312612 +0200
+++ strace-5.7/tests-m32/execveat.c 2021-08-24 21:08:43.268245917 +0200
@@ -13,9 +13,102 @@
#ifdef __NR_execveat
+# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
+static void
+tests_with_existing_file(void)
+{
+ /*
+ * Make sure the current workdir of the tracee
+ * is different from the current workdir of the tracer.
+ */
+ create_and_enter_subdir("execveat_subdir");
+
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ static const char sample[] = "execveat_sample";
+ (void) unlink(sample);
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+ static const char *argv[] = { sample, NULL };
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ long rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ sample, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ sample,
+ argv[0],
+ sprintrc(rc));
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\", [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample,
+ argv[0],
+ sprintrc(rc));
+
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_execveat, cwd_fd, sample_realpath, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ leave_and_remove_subdir();
+}
+
# define FILENAME "test.execveat\nfilename"
# define Q_FILENAME "test.execveat\\nfilename"
@@ -40,9 +133,10 @@
{
const char ** const tail_argv = tail_memdup(argv, sizeof(argv));
const char ** const tail_envp = tail_memdup(envp, sizeof(envp));
+ char *my_secontext = SECONTEXT_PID_MY();
syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\""
+ printf("%s%s(AT_FDCWD, \"%s\""
", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
# if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
@@ -50,6 +144,7 @@
", %p /* 5 vars, unterminated */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv),
# if VERBOSE
@@ -65,13 +160,14 @@
(void) q_envp; /* workaround for clang bug #33068 */
syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
# if VERBOSE
", [\"%s\", \"%s\"]"
# else
", %p /* 2 vars */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
# if VERBOSE
q_envp[0], q_envp[1],
@@ -81,13 +177,14 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, tail_argv + 2, tail_envp + 1, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"]"
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"]"
# if VERBOSE
", [\"%s\"]"
# else
", %p /* 1 var */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[2],
# if VERBOSE
q_envp[1],
@@ -101,13 +198,14 @@
*empty = NULL;
syscall(__NR_execveat, -100, FILENAME, empty, empty, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", []"
+ printf("%s%s(AT_FDCWD, \"%s\", []"
# if VERBOSE
", []"
# else
", %p /* 0 vars */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME,
# if !VERBOSE
empty,
@@ -132,7 +230,9 @@
a[i] = b[i] = NULL;
syscall(__NR_execveat, -100, FILENAME, a, b, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%.*s\"...",
+ my_secontext, "execveat",
+ Q_FILENAME, DEFAULT_STRLEN, a[0]);
for (i = 1; i < DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
# if VERBOSE
@@ -152,7 +252,9 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"", Q_FILENAME, a[1]);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"",
+ my_secontext, "execveat",
+ Q_FILENAME, a[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
# if VERBOSE
@@ -167,15 +269,19 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", NULL, %p"
+ printf("%s%s(AT_FDCWD, \"%s\", NULL, %p"
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, efault, errno2name());
syscall(__NR_execveat, -100, FILENAME, efault, NULL, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", %p, NULL"
+ printf("%s%s(AT_FDCWD, \"%s\", %p, NULL"
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, efault, errno2name());
+ tests_with_existing_file();
+
puts("+++ exited with 0 +++");
return 0;
}
Index: strace-5.7/tests-m32/faccessat.c
===================================================================
--- strace-5.7.orig/tests-m32/faccessat.c 2021-08-24 21:08:35.389312604 +0200
+++ strace-5.7/tests-m32/faccessat.c 2021-08-24 21:08:43.269245908 +0200
@@ -12,12 +12,16 @@
#ifdef __NR_faccessat
-# include "xmalloc.h"
# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
-# ifndef FD_PATH
+# include "secontext.h"
+# include "xmalloc.h"
+
+# ifdef FD_PATH
+# define YFLAG
+# else
# define FD_PATH ""
# endif
# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
@@ -43,11 +47,130 @@
return rc;
}
+# ifndef PATH_TRACING
+static void
+tests_with_existing_file(void)
+{
+ /*
+ * Make sure the current workdir of the tracee
+ * is different from the current workdir of the tracer.
+ */
+ create_and_enter_subdir("faccessat_subdir");
+
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ k_faccessat(-1, NULL, F_OK);
+ printf("%s%s(-1, NULL, F_OK) = %s\n",
+ my_secontext, "faccessat", errstr);
+
+ static const char sample[] = "faccessat_sample";
+ (void) unlink(sample);
+ int fd = open(sample, O_CREAT|O_RDONLY, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ k_faccessat(-100, sample, F_OK);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, F_OK) = %s\n",
+ my_secontext, "faccessat",
+ sample, sample_secontext,
+ errstr);
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ k_faccessat(-100, sample, F_OK);
+ printf("%s%s(AT_FDCWD, \"%s\", F_OK) = %s\n",
+ my_secontext, "faccessat",
+ sample,
+ errstr);
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ k_faccessat(cwd_fd, sample, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\", F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\", F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample,
+ errstr);
+
+ fd = open(sample, O_CREAT|O_RDONLY, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+
+ k_faccessat(cwd_fd, sample, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample, sample_secontext,
+ errstr);
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ k_faccessat(cwd_fd, sample_realpath, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample_realpath, sample_secontext,
+ errstr);
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ leave_and_remove_subdir();
+}
+# endif
+
int
main(void)
{
SKIP_IF_PROC_IS_UNAVAILABLE;
+# ifndef TEST_SECONTEXT
+
TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
char *unterminated_str = xasprintf("%p", unterminated);
const void *const efault = unterminated + 1;
@@ -120,10 +243,10 @@
k_faccessat(dirfds[dirfd_i].val,
paths[path_i].val,
modes[mode_i].val);
-# ifdef PATH_TRACING
+# ifdef PATH_TRACING
if (dirfds[dirfd_i].val == fd ||
paths[path_i].val == fd_path)
-# endif
+# endif
printf("faccessat(%s, %s, %s) = %s\n",
dirfds[dirfd_i].str,
paths[path_i].str,
@@ -133,6 +256,12 @@
}
}
+# endif /* !TEST_SECONTEXT */
+
+# ifndef PATH_TRACING
+ tests_with_existing_file();
+# endif
+
puts("+++ exited with 0 +++");
return 0;
}
Index: strace-5.7/tests-m32/faccessat.test
===================================================================
--- strace-5.7.orig/tests-m32/faccessat.test 2021-08-24 21:08:35.389312604 +0200
+++ strace-5.7/tests-m32/faccessat.test 2021-08-24 21:08:43.269245908 +0200
@@ -15,5 +15,5 @@
run_strace -a23 --trace=faccessat "$@" $args > "$EXP"
# Filter out faccessat() calls made by ld.so and libc.
-sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
+sed -n '/faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
Index: strace-5.7/tests-m32/fanotify_mark.c
===================================================================
--- strace-5.7.orig/tests-m32/fanotify_mark.c 2021-08-24 21:07:01.122112055 +0200
+++ strace-5.7/tests-m32/fanotify_mark.c 2021-08-24 21:08:43.269245908 +0200
@@ -3,7 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
* Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2020 The strace developers.
+ * Copyright (c) 2015-2021 The strace developers.
* All rights reserved.
*
* SPDX-License-Identifier: GPL-2.0-or-later
@@ -21,6 +21,8 @@
# include <unistd.h>
# include <sys/fanotify.h>
+# include "secontext.h"
+
# if XLAT_RAW
# define str_fan_mark_add "0x1"
# define str_fan_modify_ondir "0x40000002"
@@ -35,6 +37,7 @@
# define str_at_fdcwd "AT_FDCWD"
# endif
+# ifndef TEST_SECONTEXT
/* Performs fanotify_mark call via the syscall interface. */
static void
do_call(kernel_ulong_t fd, kernel_ulong_t flags, const char *flags_str,
@@ -44,18 +47,18 @@
long rc;
rc = syscall(__NR_fanotify_mark, fd, flags,
-# if (LONG_MAX > INT_MAX) \
- || (defined __x86_64__ && defined __ILP32__) \
- || defined LINUX_MIPSN32
+# if (LONG_MAX > INT_MAX) \
+ || (defined __x86_64__ && defined __ILP32__) \
+ || defined LINUX_MIPSN32
mask,
-# else
+# else
/* arch/parisc/kernel/sys_parisc32.c, commit ab8a261b */
-# ifdef HPPA
+# ifdef HPPA
LL_VAL_TO_PAIR((mask << 32) | (mask >> 32)),
-# else
+# else
LL_VAL_TO_PAIR(mask),
+# endif
# endif
-# endif
dirfd, path);
printf("fanotify_mark(%d, %s, %s, %s, %s) = %s\n",
@@ -68,12 +71,14 @@
const char *str;
};
-# define STR16 "0123456789abcdef"
-# define STR64 STR16 STR16 STR16 STR16
+# define STR16 "0123456789abcdef"
+# define STR64 STR16 STR16 STR16 STR16
+# endif /* !TEST_SECONTEXT */
int
main(void)
{
+# ifndef TEST_SECONTEXT
enum {
PATH1_SIZE = 64,
};
@@ -87,47 +92,47 @@
{ F8ILL_KULONG_MASK, "0" },
{ (kernel_ulong_t) 0xdec0deddefacec00ULL,
"0xefacec00"
-# if !XLAT_RAW
+# if !XLAT_RAW
" /* FAN_MARK_??? */"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xda7a105700000040ULL,
-# if XLAT_RAW
+# if XLAT_RAW
"0x40"
-# elif XLAT_VERBOSE
+# elif XLAT_VERBOSE
"0x40 /* FAN_MARK_IGNORED_SURV_MODIFY */"
-# else
+# else
"FAN_MARK_IGNORED_SURV_MODIFY"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xbadc0deddeadffffULL,
-# if XLAT_RAW || XLAT_VERBOSE
+# if XLAT_RAW || XLAT_VERBOSE
"0xdeadffff"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" /* "
-# endif
-# if !XLAT_RAW
+# endif
+# if !XLAT_RAW
"FAN_MARK_ADD|FAN_MARK_REMOVE|FAN_MARK_DONT_FOLLOW|"
"FAN_MARK_ONLYDIR|FAN_MARK_MOUNT|FAN_MARK_IGNORED_MASK|"
"FAN_MARK_IGNORED_SURV_MODIFY|FAN_MARK_FLUSH|"
"FAN_MARK_FILESYSTEM|0xdeadfe00"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" */"
-# endif
+# endif
},
};
static const struct strval64 masks[] = {
{ ARG_ULL_STR(0) },
{ 0xdeadfeedffffffffULL,
-# if XLAT_RAW || XLAT_VERBOSE
+# if XLAT_RAW || XLAT_VERBOSE
"0xdeadfeedffffffff"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" /* "
-# endif
-# if !XLAT_RAW
+# endif
+# if !XLAT_RAW
"FAN_ACCESS|"
"FAN_MODIFY|"
"FAN_ATTRIB|"
@@ -149,27 +154,27 @@
"FAN_ONDIR|"
"FAN_EVENT_ON_CHILD|"
"0xdeadfeedb7f0a000"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" */"
-# endif
+# endif
},
{ ARG_ULL_STR(0xffffffffb7f0a000)
-# if !XLAT_RAW
+# if !XLAT_RAW
" /* FAN_??? */"
-# endif
+# endif
},
};
static const struct strval dirfds[] = {
{ (kernel_ulong_t) 0xfacefeed00000001ULL, "1" },
{ (kernel_ulong_t) 0xdec0ded0ffffffffULL,
-# if XLAT_RAW
+# if XLAT_RAW
"-1"
-# elif XLAT_VERBOSE
+# elif XLAT_VERBOSE
"-1 /* FAN_NOFD */"
-# else
+# else
"FAN_NOFD"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xbadfacedffffff9cULL, str_at_fdcwd },
{ (kernel_ulong_t) 0xdefaced1beeff00dULL, "-1091571699" },
@@ -202,12 +207,6 @@
snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
bogus_path1 + PATH1_SIZE);
- rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
- -100, ".");
- printf("fanotify_mark(-1, %s, %s, %s, \".\") = %s\n",
- str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd,
- sprintrc(rc));
-
for (i = 0; i < ARRAY_SIZE(fds); i++) {
for (j = 0; j < ARRAY_SIZE(flags); j++) {
for (k = 0; k < ARRAY_SIZE(masks); k++) {
@@ -226,6 +225,40 @@
}
}
}
+# else /* TEST_SECONTEXT */
+ int rc;
+# endif
+ /*
+ * Test with AT_FDCWD.
+ */
+
+ char *my_secontext = SECONTEXT_PID_MY();
+ char path[] = ".";
+ char *path_secontext = SECONTEXT_FILE(path);
+
+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+ -100, path);
+ printf("%s%s(-1, %s, %s, %s, \"%s\"%s) = %s\n",
+ my_secontext, "fanotify_mark",
+ str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd,
+ path, path_secontext,
+ sprintrc(rc));
+
+ /*
+ * Test with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+ cwd_fd, path);
+ printf("%s%s(-1, %s, %s, %d%s, \"%s\"%s) = %s\n",
+ my_secontext, "fanotify_mark",
+ str_fan_mark_add, str_fan_modify_ondir,
+ cwd_fd, cwd_secontext,
+ path, path_secontext,
+ sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
Index: strace-5.7/tests-m32/fchmod.c
===================================================================
--- strace-5.7.orig/tests-m32/fchmod.c 2021-08-24 21:08:35.389312604 +0200
+++ strace-5.7/tests-m32/fchmod.c 2021-08-24 21:08:43.270245900 +0200
@@ -18,6 +18,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -27,6 +29,8 @@
*/
create_and_enter_subdir("fchmod_subdir");
+ char *my_secontext = SECONTEXT_PID_MY();
+
static const char sample[] = "fchmod_sample_file";
(void) unlink(sample);
int fd = open(sample, O_CREAT|O_RDONLY, 0400);
@@ -37,16 +41,19 @@
char *sample_realpath = get_fd_path(fd);
# endif
+ const char *sample_secontext = SECONTEXT_FILE(sample);
long rc = syscall(__NR_fchmod, fd, 0600);
# ifdef YFLAG
- printf("fchmod(%d<%s>, 0600) = %s\n",
+ printf("%s%s(%d<%s>%s, 0600) = %s\n",
# else
- printf("fchmod(%d, 0600) = %s\n",
+ printf("%s%s(%d%s, 0600) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
if (unlink(sample))
@@ -54,26 +61,30 @@
rc = syscall(__NR_fchmod, fd, 051);
# ifdef YFLAG
- printf("fchmod(%d<%s (deleted)>, 051) = %s\n",
+ printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n",
# else
- printf("fchmod(%d, 051) = %s\n",
+ printf("%s%s(%d%s, 051) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
rc = syscall(__NR_fchmod, fd, 004);
# ifdef YFLAG
- printf("fchmod(%d<%s (deleted)>, 004) = %s\n",
+ printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n",
# else
- printf("fchmod(%d, 004) = %s\n",
+ printf("%s%s(%d%s, 004) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests-m32/fchmodat.c
===================================================================
--- strace-5.7.orig/tests-m32/fchmodat.c 2021-08-24 21:08:35.390312595 +0200
+++ strace-5.7/tests-m32/fchmodat.c 2021-08-24 21:08:43.270245900 +0200
@@ -17,6 +17,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -26,26 +28,81 @@
*/
create_and_enter_subdir("fchmodat_subdir");
- static const char sample[] = "fchmodat_sample";
+ char *my_secontext = SECONTEXT_PID_MY();
+ static const char sample[] = "fchmodat_sample_file";
if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
perror_msg_and_fail("open");
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
long rc = syscall(__NR_fchmodat, -100, sample, 0600);
- printf("fchmodat(AT_FDCWD, \"%s\", 0600) = %s\n",
- sample, sprintrc(rc));
+ printf("%s%s(AT_FDCWD, \"%s\"%s, 0600) = %s\n",
+ my_secontext, "fchmodat",
+ sample, sample_secontext,
+ sprintrc(rc));
if (unlink(sample))
perror_msg_and_fail("unlink");
rc = syscall(__NR_fchmodat, -100, sample, 051);
- printf("fchmodat(AT_FDCWD, \"%s\", 051) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", 051) = %s\n",
+ my_secontext, "fchmodat",
sample, sprintrc(rc));
rc = syscall(__NR_fchmodat, -100, sample, 004);
- printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", 004) = %s\n",
+ my_secontext, "fchmodat",
sample, sprintrc(rc));
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400);
+ printf("%s%s(%d%s, \"%s\", 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample,
+ sprintrc(rc));
+
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400);
+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_fchmodat, cwd_fd, sample_realpath, 0400);
+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests-m32/fchownat.c
===================================================================
--- strace-5.7.orig/tests-m32/fchownat.c 2021-08-24 21:08:35.390312595 +0200
+++ strace-5.7/tests-m32/fchownat.c 2021-08-24 21:08:43.270245900 +0200
@@ -17,6 +17,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -26,25 +28,86 @@
*/
create_and_enter_subdir("fchownat_subdir");
- static const char sample[] = "fchownat_sample";
+ char *my_secontext = SECONTEXT_PID_MY();
uid_t uid = geteuid();
uid_t gid = getegid();
- if (open(sample, O_RDONLY | O_CREAT, 0400) == -1)
+ static const char sample[] = "fchownat_sample";
+ int fd = open(sample, O_RDONLY | O_CREAT, 0400);
+ if (fd == -1)
perror_msg_and_fail("open");
+ close(fd);
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
long rc = syscall(__NR_fchownat, AT_FDCWD, sample, uid, gid, 0);
- printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = %s\n",
- sample, uid, gid, sprintrc(rc));
+ printf("%s%s(AT_FDCWD, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ sample, sample_secontext,
+ uid, gid, sprintrc(rc));
if (unlink(sample))
perror_msg_and_fail("unlink");
rc = syscall(__NR_fchownat, AT_FDCWD,
sample, -1, -1L, AT_SYMLINK_NOFOLLOW);
- printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n",
+ my_secontext, "fchownat",
sample, sprintrc(rc));
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\", %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample,
+ uid, gid,
+ sprintrc(rc));
+
+ fd = open(sample, O_RDONLY | O_CREAT, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+
+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ uid, gid,
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_fchownat, cwd_fd, sample_realpath, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ uid, gid,
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests-m32/file_handle.c
===================================================================
--- strace-5.7.orig/tests-m32/file_handle.c 2021-08-24 21:08:35.390312595 +0200
+++ strace-5.7/tests-m32/file_handle.c 2021-08-24 21:08:43.271245891 +0200
@@ -21,6 +21,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
enum assert_rc {
ASSERT_NONE,
ASSERT_SUCCESS,
@@ -48,6 +50,7 @@
printf("...");
}
+# ifndef TEST_SECONTEXT
void
do_name_to_handle_at(kernel_ulong_t dirfd, const char *dirfd_str,
kernel_ulong_t pathname, const char *pathname_str,
@@ -129,6 +132,7 @@
printf("%s\n", sprintrc(rc));
}
+# endif /* !TEST_SECONTEXT */
struct strval {
kernel_ulong_t val;
@@ -141,12 +145,86 @@
int
main(void)
{
+ char *my_secontext = SECONTEXT_PID_MY();
enum {
PATH1_SIZE = 64,
};
static const kernel_ulong_t fdcwd =
(kernel_ulong_t) 0x87654321ffffff9cULL;
+
+ struct file_handle *handle =
+ tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ);
+ struct file_handle *handle_0 =
+ tail_alloc(sizeof(struct file_handle) + 0);
+ struct file_handle *handle_8 =
+ tail_alloc(sizeof(struct file_handle) + 8);
+ struct file_handle *handle_128 =
+ tail_alloc(sizeof(struct file_handle) + 128);
+ struct file_handle *handle_256 =
+ tail_alloc(sizeof(struct file_handle) + 256);
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
+
+ char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
+
+ const int flags = 0x400;
+ int mount_id;
+
+ handle_0->handle_bytes = 256;
+ handle_8->handle_bytes = 0;
+ handle_128->handle_bytes = 128;
+ handle_256->handle_bytes = 256;
+
+ fill_memory((char *) handle_128 + sizeof(struct file_handle), 128);
+ fill_memory((char *) handle_256 + sizeof(struct file_handle), 256);
+
+ snprintf(handle_0_addr, sizeof(handle_0_addr), "%p",
+ handle_0 + sizeof(struct file_handle));
+
+ handle->handle_bytes = 0;
+
+ char path[] = ".";
+ char *path_secontext = SECONTEXT_FILE(path);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags | 1) == -1);
+ if (EINVAL != errno)
+ perror_msg_and_skip("name_to_handle_at");
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0}, %p"
+ ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ &mount_id);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags) == -1);
+ if (EOVERFLOW != errno)
+ perror_msg_and_skip("name_to_handle_at");
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0 => %u}"
+ ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ handle->handle_bytes, &mount_id);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=%u"
+ ", handle_type=%d, f_handle=",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data(handle->f_handle, handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data(handle->f_handle, handle->handle_bytes);
+ int rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name());
+
+# ifndef TEST_SECONTEXT
static const struct strval dirfds[] = {
{ (kernel_ulong_t) 0xdeadca57badda7a1ULL, "-1159878751" },
{ (kernel_ulong_t) 0x12345678ffffff9cULL, "AT_FDCWD" },
@@ -171,29 +249,11 @@
};
static const char str64[] = STR64;
-
-
char *bogus_path1 = tail_memdup(str64, PATH1_SIZE);
char *bogus_path2 = tail_memdup(str64, sizeof(str64));
-
- struct file_handle *handle =
- tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ);
- struct file_handle *handle_0 =
- tail_alloc(sizeof(struct file_handle) + 0);
- struct file_handle *handle_8 =
- tail_alloc(sizeof(struct file_handle) + 8);
- struct file_handle *handle_128 =
- tail_alloc(sizeof(struct file_handle) + 128);
- struct file_handle *handle_256 =
- tail_alloc(sizeof(struct file_handle) + 256);
- TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
-
- char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
-
char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2];
char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2];
-
struct strval paths[] = {
{ (kernel_ulong_t) 0, "NULL" },
{ (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE),
@@ -229,62 +289,16 @@
(kernel_ulong_t) (uintptr_t) bogus_mount_id,
};
- const int flags = 0x400;
- int mount_id;
unsigned int i;
unsigned int j;
unsigned int k;
unsigned int l;
unsigned int m;
-
snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1);
snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
bogus_path1 + PATH1_SIZE);
- handle_0->handle_bytes = 256;
- handle_8->handle_bytes = 0;
- handle_128->handle_bytes = 128;
- handle_256->handle_bytes = 256;
-
- fill_memory((char *) handle_128 + sizeof(struct file_handle), 128);
- fill_memory((char *) handle_256 + sizeof(struct file_handle), 256);
-
- snprintf(handle_0_addr, sizeof(handle_0_addr), "%p",
- handle_0 + sizeof(struct file_handle));
-
- handle->handle_bytes = 0;
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags | 1) == -1);
- if (EINVAL != errno)
- perror_msg_and_skip("name_to_handle_at");
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0}, %p"
- ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", &mount_id);
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags) == -1);
- if (EOVERFLOW != errno)
- perror_msg_and_skip("name_to_handle_at");
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0 => %u}"
- ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n",
- handle->handle_bytes, &mount_id);
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags) == 0);
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u"
- ", handle_type=%d, f_handle=",
- handle->handle_bytes, handle->handle_type);
- print_handle_data(handle->f_handle, handle->handle_bytes);
- printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
-
- printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d"
- ", f_handle=", handle->handle_bytes, handle->handle_type);
- print_handle_data(handle->f_handle, handle->handle_bytes);
- int rc = syscall(__NR_open_by_handle_at, -1, handle,
- O_RDONLY | O_DIRECTORY);
- printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name());
-
for (i = 0; i < ARRAY_SIZE(dirfds); i++) {
for (j = 0; j < ARRAY_SIZE(paths); j++) {
for (k = 0; k < ARRAY_SIZE(name_handles); k++) {
@@ -320,6 +334,68 @@
}
}
}
+# endif
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ assert(syscall(__NR_name_to_handle_at, cwd_fd, path, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u, handle_type=%d"
+ ", f_handle=",
+ my_secontext, "name_to_handle_at",
+ cwd_fd, cwd_secontext,
+ path, path_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir(".."))
+ perror_msg_and_fail("chdir");
+
+ assert(syscall(__NR_name_to_handle_at, cwd_fd, cwd, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u"
+ ", handle_type=%d, f_handle=",
+ my_secontext, "name_to_handle_at",
+ cwd_fd, cwd_secontext,
+ cwd, cwd_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
puts("+++ exited with 0 +++");
return 0;
Index: strace-5.7/tests-m32/gen_secontext.sh
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/gen_secontext.sh 2021-08-24 21:08:43.271245891 +0200
@@ -0,0 +1,72 @@
+#!/bin/sh -efu
+#
+# Copyright (c) 2021 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+usage()
+{
+ cat >&2 <<EOF
+Usage: $0 [<input>]
+
+Generate secontext files from <input> list.
+EOF
+ exit 1
+}
+
+if [ $# -eq 0 ]; then
+ input="${0%/*}/gen_tests.in"
+else
+ input="$1"
+ shift
+fi
+dir="$(dirname "$input")"
+[ $# -eq 0 ] || usage
+
+{
+ cat <<EOF
+# Generated by $0 from $input; do not edit.
+
+secontext_EXECUTABLES = \\
+EOF
+ sed -r -n 's/^([^#[:space:]]+--secontext(_full)?)[[:space:]].*/ \1 \\/p' < "$input"
+ cat <<EOF
+ #
+
+EOF
+ sed -r -n 's/-/_/g; s/^([^#[:space:]]+__secontext(_full)?)[[:space:]].*/\1_LDADD = \$(LDADD) \$(libselinux_LDADD)/p' < "$input"
+} > "$dir/secontext.am"
+
+sed -r -n 's/^([^#[:space:]]+--secontext)[[:space:]].*/\1/p' < "$input" |
+while read -r name; do {
+ cat <<-EOF > "$dir/$name.c"
+ /*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+ #include "tests.h"
+
+ #ifdef HAVE_SELINUX_RUNTIME
+
+ # define TEST_SECONTEXT
+ # include "${name%--secontext}.c"
+
+ #else
+
+ SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+ #endif
+ EOF
+} < /dev/null; done
+
+sed -r -n 's/^([^#[:space:]]+--secontext_full)[[:space:]].*/\1/p' < "$input" |
+while read -r name; do {
+ cat <<-EOF > "$dir/$name.c"
+ #define PRINT_SECONTEXT_FULL
+ #include "${name%_full}.c"
+ EOF
+} < /dev/null; done
Index: strace-5.7/tests-m32/gen_tests.in
===================================================================
--- strace-5.7.orig/tests-m32/gen_tests.in 2021-08-24 21:08:35.391312587 +0200
+++ strace-5.7/tests-m32/gen_tests.in 2021-08-24 21:08:43.272245883 +0200
@@ -10,6 +10,8 @@
accept -a22
accept4 -a37
access -a30 --trace-path=access_sample
+access--secontext -a30 --secontext --trace-path=access_sample -e trace=access
+access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access
acct -a20
add_key -a30 -s12
adjtimex -a15
@@ -24,6 +26,8 @@
bpf-v -a20 -v -e trace=bpf
btrfs +ioctl.test
chmod -a28
+chmod--secontext -a28 --secontext -e trace=chmod
+chmod--secontext_full -a28 --secontext=full -e trace=chmod
chown -a28
chown32 -a31
chroot -a24
@@ -71,25 +75,43 @@
epoll_pwait
epoll_wait -a26
erestartsys -a34 -e signal=none -e trace=recvfrom
+execve--secontext +execve.test --secontext
+execve--secontext_full +execve.test --secontext=full
execveat
+execveat--secontext --secontext --trace=execveat
+execveat--secontext_full --secontext=full --trace=execveat
execveat-v -v -e trace=execveat
+faccessat--secontext +faccessat.test -a24 --secontext
+faccessat--secontext_full +faccessat.test -a24 --secontext=full
faccessat-P -a23 --trace=faccessat -P /dev/full
faccessat-y +faccessat.test -a24 -y
+faccessat-y--secontext +faccessat.test -a24 -y --secontext
+faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full
faccessat-yy +faccessat.test -a24 -yy
fadvise64_64 +fadvise64.test
fallocate -a18
fanotify_init
fanotify_mark -a32
+fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark
+fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark
fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark
fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark
fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark
fchdir -a11
fchmod -a15
+fchmod--secontext -a15 --secontext -e trace=fchmod
+fchmod--secontext_full -a15 --secontext=full -e trace=fchmod
fchmod-y -y -e trace=fchmod
+fchmod-y--secontext -a15 -y --secontext -e trace=fchmod
+fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod
fchmodat
+fchmodat--secontext --secontext -e trace=fchmodat
+fchmodat--secontext_full --secontext=full -e trace=fchmodat
fchown -a16
fchown32 -a18
fchownat
+fchownat--secontext --secontext -e trace=fchownat
+fchownat--secontext_full --secontext=full -e trace=fchownat
fcntl -a8
fcntl--pidns-translation test_pidns -a8 -e trace=fcntl
fcntl64 -a8
@@ -97,6 +119,8 @@
fdatasync -a14
file_handle -e trace=name_to_handle_at,open_by_handle_at
file_ioctl +ioctl.test
+file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at
+file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at
filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
filter_seccomp-flag ../$NAME
finit_module -a25
@@ -295,6 +319,8 @@
lchown32 -a32
link
linkat
+linkat--secontext --secontext -e trace=linkat
+linkat--secontext_full --secontext=full -e trace=linkat
lookup_dcookie -a27
lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
@@ -434,9 +460,13 @@
oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full
oldstat -a32 -v -P stat.sample -P /dev/full
open -a30 -P $NAME.sample
+open--secontext -a30 -P open.sample --secontext --trace=open
+open--secontext_full -a30 -P open.sample --secontext=full --trace=open
open_tree -a30 -y
open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree
openat -a36 -P $NAME.sample
+openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat
+openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat
openat2 -a35
openat2-Xabbrev --trace=openat2 -a35 -Xabbrev
openat2-Xraw --trace=openat2 -a32 -Xraw
Index: strace-5.7/tests-m32/linkat.c
===================================================================
--- strace-5.7.orig/tests-m32/linkat.c 2021-08-24 21:08:35.391312587 +0200
+++ strace-5.7/tests-m32/linkat.c 2021-08-24 21:08:43.272245883 +0200
@@ -10,8 +10,14 @@
#ifdef __NR_linkat
+# include <fcntl.h>
# include <stdio.h>
+# include <stdlib.h>
# include <unistd.h>
+# include <sys/stat.h>
+
+# include "secontext.h"
+# include "xmalloc.h"
int
main(void)
@@ -27,18 +33,158 @@
const long fd_old = (long) 0xdeadbeefffffffffULL;
const long fd_new = (long) 0xdeadbeeffffffffeULL;
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ (void) unlink(sample_1);
+ (void) unlink(sample_2);
+
long rc = syscall(__NR_linkat, fd_old, sample_1, fd_new, sample_2, 0);
- printf("linkat(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n",
+ printf("%s%s(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n",
+ my_secontext, "linkat",
(int) fd_old, sample_1, (int) fd_new, sample_2,
rc, errno2name());
rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, -1L);
- printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
+ printf("%s%s(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
+ my_secontext, "linkat",
"AT_FDCWD", sample_1, "AT_FDCWD", sample_2,
"AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
"|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
rc, errno2name());
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ int fd_sample_1 = open(sample_1, O_RDONLY | O_CREAT, 0400);
+ if (fd_sample_1 < 0)
+ perror_msg_and_fail("open");
+ if (close(fd_sample_1))
+ perror_msg_and_fail("close");
+
+ char *sample_1_secontext = SECONTEXT_FILE(sample_1);
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ const char *sample_2_secontext = sample_1_secontext;
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ int fd_sample_2 = open(sample_2, O_RDONLY | O_CREAT, 0400);
+ if (fd_sample_2 < 0)
+ perror_msg_and_fail("open");
+ if (close(fd_sample_2))
+ perror_msg_and_fail("close");
+
+ free(sample_1_secontext);
+ update_secontext_type(sample_1, "default_t");
+ sample_1_secontext = SECONTEXT_FILE(sample_1);
+ sample_2_secontext = sample_1_secontext;
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ if (unlink(sample_2))
+ perror_msg_and_fail("unlink: %s", sample_2);
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int dfd_old = get_dir_fd(".");
+ char *cwd = get_fd_path(dfd_old);
+ char *dfd_old_secontext = SECONTEXT_FILE(".");
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0);
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ if (unlink(sample_2))
+ perror_msg_and_fail("unlink: %s", sample_2);
+
+ static const char new_dir[] = "new";
+ char *new_sample_2 = xasprintf("%s/%s", new_dir, sample_2);
+
+ (void) unlink(new_sample_2);
+ (void) rmdir(new_dir);
+
+ if (mkdir(new_dir, 0700))
+ perror_msg_and_fail("mkdir");
+ char *new_dir_realpath = xasprintf("%s/%s", cwd, new_dir);
+ char *new_dir_secontext = SECONTEXT_FILE(new_dir);
+ int dfd_new = get_dir_fd(new_dir);
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ dfd_new, new_dir_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ dfd_new, new_dir_secontext,
+ sample_2, SECONTEXT_FILE(new_sample_2),
+ sprintrc(rc));
+
+ char *new_sample_2_realpath = xasprintf("%s/%s", new_dir_realpath, sample_2);
+
+ /* dfd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, new_sample_2_realpath, 0);
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ new_sample_2_realpath, SECONTEXT_FILE(new_sample_2_realpath),
+ sprintrc(rc));
+
+ if (fchdir(dfd_old))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample_1))
+ perror_msg_and_fail("unlink: %s", sample_1);
+ if (unlink(new_sample_2))
+ perror_msg_and_fail("unlink: %s", new_sample_2);
+ if (rmdir(new_dir))
+ perror_msg_and_fail("rmdir: %s", new_dir);
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests-m32/open.c
===================================================================
--- strace-5.7.orig/tests-m32/open.c 2021-08-24 21:08:35.391312587 +0200
+++ strace-5.7/tests-m32/open.c 2021-08-24 21:08:43.272245883 +0200
@@ -15,6 +15,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -25,10 +27,12 @@
create_and_enter_subdir("open_subdir");
static const char sample[] = "open.sample";
+ char *my_secontext = SECONTEXT_PID_MY();
long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400);
- printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
- sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "open",
+ sample, sprintrc(fd), SECONTEXT_FILE(sample));
if (fd != -1) {
close(fd);
@@ -36,16 +40,18 @@
perror_msg_and_fail("unlink");
fd = syscall(__NR_open, sample, O_RDONLY);
- printf("open(\"%s\", O_RDONLY) = %s\n", sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_RDONLY) = %s\n",
+ my_secontext, "open", sample, sprintrc(fd));
fd = syscall(__NR_open, sample, O_WRONLY|O_NONBLOCK|0x80000000);
- printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n",
- sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n",
+ my_secontext, "open", sample, sprintrc(fd));
}
# ifdef O_TMPFILE
fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600);
- printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+ printf("%s%s(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+ my_secontext, "open",
sample, sprintrc(fd));
# endif /* O_TMPFILE */
Index: strace-5.7/tests-m32/openat.c
===================================================================
--- strace-5.7.orig/tests-m32/openat.c 2021-08-24 21:08:35.392312578 +0200
+++ strace-5.7/tests-m32/openat.c 2021-08-24 21:08:43.273245874 +0200
@@ -15,6 +15,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
# ifdef O_TMPFILE
/* The kernel & C libraries often inline O_DIRECTORY. */
# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY)
@@ -26,10 +28,12 @@
static void
test_mode_flag(unsigned int mode_val, const char *mode_str,
- unsigned int flag_val, const char *flag_str)
+ unsigned int flag_val, const char *flag_str,
+ const char *my_secontext)
{
long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0);
- printf("openat(-1, \"%s\", %s%s%s%s) = %s\n",
+ printf("%s%s(-1, \"%s\", %s%s%s%s) = %s\n",
+ my_secontext, "openat",
sample, mode_str,
flag_val ? "|" : "", flag_str,
flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "",
@@ -45,20 +49,7 @@
*/
create_and_enter_subdir("openat_subdir");
- long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
- printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
- sample, sprintrc(fd));
-
- if (fd != -1) {
- close(fd);
- if (unlink(sample) == -1)
- perror_msg_and_fail("unlink");
-
- fd = syscall(__NR_openat, -100, sample, O_RDONLY);
- printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %s\n",
- sample, sprintrc(fd));
- }
-
+ char *my_secontext = SECONTEXT_PID_MY();
struct {
unsigned int val;
const char *str;
@@ -105,7 +96,73 @@
for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m)
for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f)
test_mode_flag(modes[m].val, modes[m].str,
- flags[f].val, flags[f].str);
+ flags[f].val, flags[f].str,
+ my_secontext);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ (void) unlink(sample);
+ long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * File context in openat() is not displayed because file doesn't exist
+ * yet, but is displayed in return value since the file got created.
+ */
+ printf("%s%s(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "openat",
+ sample,
+ sprintrc(fd), sample_secontext);
+
+ close(fd);
+
+ fd = syscall(__NR_openat, -100, sample, O_RDONLY);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, O_RDONLY) = %s%s\n",
+ my_secontext, "openat",
+ sample, sample_secontext,
+ sprintrc(fd), sample_secontext);
+ if (fd != -1) {
+ close(fd);
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+ }
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY|O_CREAT, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("openat");
+ close(fd);
+
+ /*
+ * File context in openat() is not displayed because file doesn't exist
+ * yet, but is displayed in return value since the file got created.
+ */
+ printf("%s%s(%d%s, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "openat",
+ cwd_fd, cwd_secontext,
+ sample,
+ sprintrc(fd), sample_secontext);
+
+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY);
+ printf("%s%s(%d%s, \"%s\"%s, O_RDONLY) = %s%s\n",
+ my_secontext, "openat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ sprintrc(fd), sample_secontext);
+ if (fd != -1) {
+ close(fd);
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+ }
leave_and_remove_subdir();
Index: strace-5.7/tests-m32/options-syntax.test
===================================================================
--- strace-5.7.orig/tests-m32/options-syntax.test 2021-08-24 21:08:35.392312578 +0200
+++ strace-5.7/tests-m32/options-syntax.test 2021-08-24 21:08:43.273245874 +0200
@@ -2,14 +2,16 @@
#
# Check strace options syntax.
#
-# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2020 The strace developers.
+# Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
+# Copyright (c) 2016-2021 The strace developers.
# All rights reserved.
#
# SPDX-License-Identifier: GPL-2.0-or-later
. "${srcdir=.}/syntax.sh"
+compiled_with_secontext=$(get_config_option ENABLE_SECONTEXT "y")
+
check_e "Invalid process id: '0'" -p 0
check_e "Invalid process id: '0'" --attach=0
check_e "Invalid process id: '-42'" -p -42
@@ -46,6 +48,8 @@
check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$
check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$
check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$
+[ -z "$compiled_with_secontext" ] ||
+ check_h "invalid --secontext argument: 'ss'" --secontext=ss
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$
@@ -281,6 +285,11 @@
$STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTyzZ true
+ if [ -n "$compiled_with_secontext" ]; then
+ check_e "--secontext has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" -u :nosuchuser: -c --secontext true
+ fi
+
for c in --output-separately -A/--output-append-mode; do
check_e "$c has no effect without -o/--output
$STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true
Index: strace-5.7/tests-m32/secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/secontext.c 2021-08-24 21:08:43.274245866 +0200
@@ -0,0 +1,201 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# include <assert.h>
+# include <errno.h>
+# include <stdlib.h>
+# include <string.h>
+# include <unistd.h>
+# include <selinux/selinux.h>
+
+# include "xmalloc.h"
+
+# define TEST_SECONTEXT
+# include "secontext.h"
+
+static char *
+secontext_format(char *context, const char *fmt)
+ ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC;
+
+static char *
+secontext_format(char *context, const char *fmt)
+{
+ int saved_errno = errno;
+ char *res = context ? xasprintf(fmt, context) : xstrdup("");
+ free(context);
+ errno = saved_errno;
+ return res;
+}
+
+# define FORMAT_SPACE_BEFORE(string) secontext_format(string, " [%s]")
+# define FORMAT_SPACE_AFTER(string) secontext_format(string, "[%s] ")
+
+static char *
+strip_trailing_newlines(char *context)
+{
+ /*
+ * On the CI at least, the context may have a trailing \n,
+ * let's remove it just in case.
+ */
+ size_t len = strlen(context);
+ for (; len > 0; --len) {
+ if (context[len - 1] != '\n')
+ break;
+ }
+ context[len] = '\0';
+ return context;
+}
+
+static char *
+raw_secontext_full_file(const char *filename)
+{
+ int saved_errno = errno;
+ char *full_secontext = NULL;
+ char *secontext;
+
+ if (getfilecon(filename, &secontext) >= 0) {
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
+ freecon(secontext);
+ }
+ errno = saved_errno;
+ return full_secontext;
+}
+
+static char *
+raw_secontext_short_file(const char *filename)
+{
+ int saved_errno = errno;
+
+ char *ctx = raw_secontext_full_file(filename);
+ if (ctx == NULL)
+ return ctx;
+
+ char *saveptr = NULL;
+ const char *token;
+ unsigned int i;
+
+ char *ctx_copy = xstrdup(ctx);
+ char *context = NULL;
+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), i++) {
+ if (i == 2) {
+ context = xstrdup(token);
+ break;
+ }
+ }
+ if (context == NULL)
+ context = xstrdup(ctx);
+ free(ctx_copy);
+ free(ctx);
+
+ errno = saved_errno;
+ return context;
+}
+
+static char *
+raw_secontext_full_pid(pid_t pid)
+{
+ int saved_errno = errno;
+ char *full_secontext = NULL;
+ char *secontext;
+
+ if (getpidcon(pid, &secontext) == 0) {
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
+ freecon(secontext);
+ }
+ errno = saved_errno;
+ return full_secontext;
+}
+
+static char *
+raw_secontext_short_pid(pid_t pid)
+{
+ int saved_errno = errno;
+
+ char *ctx = raw_secontext_full_pid(pid);
+ if (ctx == NULL)
+ return ctx;
+
+ char *saveptr = NULL;
+ const char *token;
+ int i;
+
+ char *ctx_copy = xstrdup(ctx);
+ char *context = NULL;
+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), i++) {
+ if (i == 2) {
+ context = xstrdup(token);
+ break;
+ }
+ }
+ if (context == NULL)
+ context = xstrdup(ctx);
+ free(ctx_copy);
+ free(ctx);
+
+ errno = saved_errno;
+ return context;
+}
+
+char *
+secontext_full_file(const char *filename)
+{
+ return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename));
+}
+
+char *
+secontext_full_pid(pid_t pid)
+{
+ return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid));
+}
+
+char *
+secontext_short_file(const char *filename)
+{
+ return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename));
+}
+
+char *
+secontext_short_pid(pid_t pid)
+{
+ return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid));
+}
+
+void
+update_secontext_type(const char *file, const char *newtype)
+{
+ char *ctx = raw_secontext_full_file(file);
+ if (ctx == NULL)
+ return;
+
+ char *saveptr = NULL;
+ char *token;
+ int field;
+ char *split[4];
+
+ for (token = strtok_r(ctx, ":", &saveptr), field = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), field++) {
+ assert(field < 4);
+ split[field] = token;
+ }
+ assert(field == 4);
+
+ char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1],
+ newtype, split[3]);
+
+ (void) setfilecon(file, newcontext);
+
+ free(newcontext);
+ free(ctx);
+}
+
+#endif /* HAVE_SELINUX_RUNTIME */
Index: strace-5.7/tests-m32/secontext.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/secontext.h 2021-08-24 21:08:43.274245866 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "xmalloc.h"
+#include <unistd.h>
+
+#if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME
+
+void update_secontext_type(const char *file, const char *newtype);
+
+# ifdef PRINT_SECONTEXT_FULL
+
+char *secontext_full_file(const char *) ATTRIBUTE_MALLOC;
+char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC;
+
+# define SECONTEXT_FILE(filename) secontext_full_file(filename)
+# define SECONTEXT_PID(pid) secontext_full_pid(pid)
+
+# else
+
+char *secontext_short_file(const char *) ATTRIBUTE_MALLOC;
+char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC;
+
+# define SECONTEXT_FILE(filename) secontext_short_file(filename)
+# define SECONTEXT_PID(pid) secontext_short_pid(pid)
+
+# endif
+
+#else
+
+static inline void
+update_secontext_type(const char *file, const char *newtype)
+{
+}
+
+# define SECONTEXT_FILE(filename) xstrdup("")
+# define SECONTEXT_PID(pid) xstrdup("")
+
+#endif
+
+#define SECONTEXT_PID_MY() SECONTEXT_PID(getpid())
Index: strace-5.7/tests-m32/strace-V.test
===================================================================
--- strace-5.7.orig/tests-m32/strace-V.test 2021-08-24 21:08:35.392312578 +0200
+++ strace-5.7/tests-m32/strace-V.test 2021-08-24 21:08:43.274245866 +0200
@@ -33,7 +33,9 @@
;;
esac
-features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
+option_secontext=$(get_config_option ENABLE_SECONTEXT " secontext")
+
+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}${option_secontext}"
[ -n "$features" ] || features=" (none)"
cat > "$EXP" << __EOF__
Index: strace-5.7/tests-mx32/Makefile.am
===================================================================
--- strace-5.7.orig/tests-mx32/Makefile.am 2021-08-24 21:08:35.393312570 +0200
+++ strace-5.7/tests-mx32/Makefile.am 2021-08-24 21:08:43.274245866 +0200
@@ -28,6 +28,12 @@
-DTESTS_SIZEOF_LONG=$(SIZEOF_LONG)
AM_LDFLAGS = $(ARCH_MFLAGS)
+if HAVE_SELINUX_RUNTIME
+libselinux_LDADD = $(libselinux_LIBS)
+else
+libselinux_LDADD =
+endif
+
libtests_a_SOURCES = \
create_nl_socket.c \
create_tmpfile.c \
@@ -54,6 +60,8 @@
printxval-Xabbrev.c \
printxval-Xraw.c \
printxval-Xverbose.c \
+ secontext.c \
+ secontext.h \
signal2name.c \
skip_unavailable.c \
sprintrc.c \
@@ -76,7 +84,10 @@
include pure_executables.am
+include secontext.am
+
check_PROGRAMS = $(PURE_EXECUTABLES) \
+ $(secontext_EXECUTABLES) \
_newselect-P \
answer \
attach-f-p \
Index: strace-5.7/tests-mx32/access.c
===================================================================
--- strace-5.7.orig/tests-mx32/access.c 2021-08-24 21:08:35.393312570 +0200
+++ strace-5.7/tests-mx32/access.c 2021-08-24 21:08:43.275245858 +0200
@@ -10,9 +10,12 @@
#ifdef __NR_access
+# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -22,15 +25,27 @@
*/
create_and_enter_subdir("access_subdir");
+ char *my_secontext = SECONTEXT_PID_MY();
+
static const char sample[] = "access_sample";
+ (void) unlink(sample);
+ if (open(sample, O_CREAT|O_RDONLY, 0400) == -1)
+ perror_msg_and_fail("open: %s", sample);
long rc = syscall(__NR_access, sample, F_OK);
- printf("access(\"%s\", F_OK) = %ld %s (%m)\n",
- sample, rc, errno2name());
+ printf("%s%s(\"%s\"%s, F_OK) = %s\n",
+ my_secontext, "access",
+ sample, SECONTEXT_FILE(sample),
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink: %s", sample);
rc = syscall(__NR_access, sample, R_OK|W_OK|X_OK);
- printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
- sample, rc, errno2name());
+ printf("%s%s(\"%s\", R_OK|W_OK|X_OK) = %s\n",
+ my_secontext, "access",
+ sample,
+ sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests-mx32/chmod.c
===================================================================
--- strace-5.7.orig/tests-mx32/chmod.c 2021-08-24 21:08:35.393312570 +0200
+++ strace-5.7/tests-mx32/chmod.c 2021-08-24 21:08:43.275245858 +0200
@@ -16,6 +16,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -25,22 +27,33 @@
*/
create_and_enter_subdir("chmod_subdir");
- static const char fname[] = "chmod_test_file";
-
- if (open(fname, O_CREAT|O_RDONLY, 0400) < 0)
- perror_msg_and_fail("open");
-
- long rc = syscall(__NR_chmod, fname, 0600);
- printf("chmod(\"%s\", 0600) = %s\n", fname, sprintrc(rc));
-
- if (unlink(fname))
- perror_msg_and_fail("unlink");
-
- rc = syscall(__NR_chmod, fname, 051);
- printf("chmod(\"%s\", 051) = %s\n", fname, sprintrc(rc));
+ char *my_secontext = SECONTEXT_PID_MY();
- rc = syscall(__NR_chmod, fname, 004);
- printf("chmod(\"%s\", 004) = %s\n", fname, sprintrc(rc));
+ static const char sample[] = "chmod_test_file";
+ (void) unlink(sample);
+ if (open(sample, O_CREAT|O_RDONLY, 0400) < 0)
+ perror_msg_and_fail("open: %s", sample);
+
+ long rc = syscall(__NR_chmod, sample, 0600);
+ printf("%s%s(\"%s\"%s, 0600) = %s\n",
+ my_secontext, "chmod",
+ sample, SECONTEXT_FILE(sample),
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink: %s", sample);
+
+ rc = syscall(__NR_chmod, sample, 051);
+ printf("%s%s(\"%s\", 051) = %s\n",
+ my_secontext, "chmod",
+ sample,
+ sprintrc(rc));
+
+ rc = syscall(__NR_chmod, sample, 004);
+ printf("%s%s(\"%s\", 004) = %s\n",
+ my_secontext, "chmod",
+ sample,
+ sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests-mx32/execve.c
===================================================================
--- strace-5.7.orig/tests-mx32/execve.c 2021-08-24 21:08:35.394312561 +0200
+++ strace-5.7/tests-mx32/execve.c 2021-08-24 21:08:43.275245858 +0200
@@ -9,9 +9,12 @@
*/
#include "tests.h"
+#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
+#include "secontext.h"
+
static const char *errstr;
static int
@@ -52,9 +55,16 @@
char ** const tail_argv = tail_memdup(argv, sizeof(argv));
char ** const tail_envp = tail_memdup(envp, sizeof(envp));
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ (void) unlink(FILENAME);
+ if (open(FILENAME, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ char *FILENAME_secontext = SECONTEXT_FILE(FILENAME);
call_execve(FILENAME, tail_argv, tail_envp);
- printf("execve(\"%s\""
+ printf("%s%s(\"%s\"%s"
", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
#if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
@@ -62,7 +72,9 @@
", %p /* 5 vars, unterminated */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv)
#if VERBOSE
, q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
@@ -77,14 +89,16 @@
(void) q_envp; /* workaround for clang bug #33068 */
call_execve(FILENAME, tail_argv, tail_envp);
- printf("execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
+ printf("%s%s(\"%s\"%s, [\"%s\", \"%s\", \"%s\"]"
#if VERBOSE
", [\"%s\", \"%s\"]"
#else
", %p /* 2 vars */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[0], q_argv[1], q_argv[2]
#if VERBOSE
, q_envp[0], q_envp[1]
#else
@@ -93,14 +107,16 @@
, errstr);
call_execve(FILENAME, tail_argv + 2, tail_envp + 1);
- printf("execve(\"%s\", [\"%s\"]"
+ printf("%s%s(\"%s\"%s, [\"%s\"]"
#if VERBOSE
", [\"%s\"]"
#else
", %p /* 1 var */"
#endif
") = %s\n",
- Q_FILENAME, q_argv[2]
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ q_argv[2]
#if VERBOSE
, q_envp[1]
#else
@@ -113,13 +129,15 @@
*empty = NULL;
call_execve(FILENAME, empty, empty);
- printf("execve(\"%s\", []"
+ printf("%s%s(\"%s\"%s, []"
#if VERBOSE
", []"
#else
", %p /* 0 vars */"
#endif
- ") = %s\n", Q_FILENAME
+ ") = %s\n",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext
#if !VERBOSE
, empty
#endif
@@ -143,7 +161,10 @@
a[i] = b[i] = NULL;
call_execve(FILENAME, a, b);
- printf("execve(\"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
+ printf("%s%s(\"%s\"%s, [\"%.*s\"...",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ DEFAULT_STRLEN, a[0]);
for (i = 1; i < DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
#if VERBOSE
@@ -162,7 +183,10 @@
printf(") = %s\n", errstr);
call_execve(FILENAME, a + 1, b + 1);
- printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
+ printf("%s%s(\"%s\"%s, [\"%s\"",
+ my_secontext, "execve",
+ Q_FILENAME, FILENAME_secontext,
+ a[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
#if VERBOSE
@@ -175,12 +199,17 @@
#endif
printf(") = %s\n", errstr);
+ if (unlink(FILENAME))
+ perror_msg_and_fail("unlink");
+
call_execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault);
- printf("execve(\"%s\", NULL, %p) = %s\n",
+ printf("%s%s(\"%s\", NULL, %p) = %s\n",
+ my_secontext, "execve",
Q_FILENAME, efault, errstr);
call_execve(FILENAME, efault, NULL);
- printf("execve(\"%s\", %p, NULL) = %s\n",
+ printf("%s%s(\"%s\", %p, NULL) = %s\n",
+ my_secontext, "execve",
Q_FILENAME, efault, errstr);
leave_and_remove_subdir();
Index: strace-5.7/tests-mx32/execve.test
===================================================================
--- strace-5.7.orig/tests-mx32/execve.test 2021-08-24 21:08:35.394312561 +0200
+++ strace-5.7/tests-mx32/execve.test 2021-08-24 21:08:43.275245858 +0200
@@ -11,7 +11,7 @@
check_prog grep
run_prog > /dev/null
-run_strace -eexecve $args > "$EXP"
+run_strace -eexecve "$@" $args > "$EXP"
# Filter out execve() call made by strace.
grep -F test.execve < "$LOG" > "$OUT"
Index: strace-5.7/tests-mx32/execveat.c
===================================================================
--- strace-5.7.orig/tests-mx32/execveat.c 2021-08-24 21:08:35.394312561 +0200
+++ strace-5.7/tests-mx32/execveat.c 2021-08-24 21:08:43.276245849 +0200
@@ -13,9 +13,102 @@
#ifdef __NR_execveat
+# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
+static void
+tests_with_existing_file(void)
+{
+ /*
+ * Make sure the current workdir of the tracee
+ * is different from the current workdir of the tracer.
+ */
+ create_and_enter_subdir("execveat_subdir");
+
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ static const char sample[] = "execveat_sample";
+ (void) unlink(sample);
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+ static const char *argv[] = { sample, NULL };
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ long rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ sample, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ rc = syscall(__NR_execveat, -100, sample, argv, NULL, 0);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ sample,
+ argv[0],
+ sprintrc(rc));
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\", [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample,
+ argv[0],
+ sprintrc(rc));
+
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ rc = syscall(__NR_execveat, cwd_fd, sample, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_execveat, cwd_fd, sample_realpath, argv, NULL, 0);
+ printf("%s%s(%d%s, \"%s\"%s, [\"%s\"], NULL, 0) = %s\n",
+ my_secontext, "execveat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ argv[0],
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ leave_and_remove_subdir();
+}
+
# define FILENAME "test.execveat\nfilename"
# define Q_FILENAME "test.execveat\\nfilename"
@@ -40,9 +133,10 @@
{
const char ** const tail_argv = tail_memdup(argv, sizeof(argv));
const char ** const tail_envp = tail_memdup(envp, sizeof(envp));
+ char *my_secontext = SECONTEXT_PID_MY();
syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\""
+ printf("%s%s(AT_FDCWD, \"%s\""
", [\"%s\", \"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
# if VERBOSE
", [\"%s\", \"%s\", %p, %p, %p, ... /* %p */]"
@@ -50,6 +144,7 @@
", %p /* 5 vars, unterminated */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
argv[3], argv[4], argv[5], (char *) tail_argv + sizeof(argv),
# if VERBOSE
@@ -65,13 +160,14 @@
(void) q_envp; /* workaround for clang bug #33068 */
syscall(__NR_execveat, -100, FILENAME, tail_argv, tail_envp, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\", \"%s\", \"%s\"]"
# if VERBOSE
", [\"%s\", \"%s\"]"
# else
", %p /* 2 vars */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
# if VERBOSE
q_envp[0], q_envp[1],
@@ -81,13 +177,14 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, tail_argv + 2, tail_envp + 1, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"]"
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"]"
# if VERBOSE
", [\"%s\"]"
# else
", %p /* 1 var */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, q_argv[2],
# if VERBOSE
q_envp[1],
@@ -101,13 +198,14 @@
*empty = NULL;
syscall(__NR_execveat, -100, FILENAME, empty, empty, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", []"
+ printf("%s%s(AT_FDCWD, \"%s\", []"
# if VERBOSE
", []"
# else
", %p /* 0 vars */"
# endif
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME,
# if !VERBOSE
empty,
@@ -132,7 +230,9 @@
a[i] = b[i] = NULL;
syscall(__NR_execveat, -100, FILENAME, a, b, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%.*s\"...", Q_FILENAME, DEFAULT_STRLEN, a[0]);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%.*s\"...",
+ my_secontext, "execveat",
+ Q_FILENAME, DEFAULT_STRLEN, a[0]);
for (i = 1; i < DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
# if VERBOSE
@@ -152,7 +252,9 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", [\"%s\"", Q_FILENAME, a[1]);
+ printf("%s%s(AT_FDCWD, \"%s\", [\"%s\"",
+ my_secontext, "execveat",
+ Q_FILENAME, a[1]);
for (i = 2; i <= DEFAULT_STRLEN; ++i)
printf(", \"%s\"", a[i]);
# if VERBOSE
@@ -167,15 +269,19 @@
errno2name());
syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", NULL, %p"
+ printf("%s%s(AT_FDCWD, \"%s\", NULL, %p"
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, efault, errno2name());
syscall(__NR_execveat, -100, FILENAME, efault, NULL, 0x1100);
- printf("execveat(AT_FDCWD, \"%s\", %p, NULL"
+ printf("%s%s(AT_FDCWD, \"%s\", %p, NULL"
", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+ my_secontext, "execveat",
Q_FILENAME, efault, errno2name());
+ tests_with_existing_file();
+
puts("+++ exited with 0 +++");
return 0;
}
Index: strace-5.7/tests-mx32/faccessat.c
===================================================================
--- strace-5.7.orig/tests-mx32/faccessat.c 2021-08-24 21:08:35.394312561 +0200
+++ strace-5.7/tests-mx32/faccessat.c 2021-08-24 21:08:43.276245849 +0200
@@ -12,12 +12,16 @@
#ifdef __NR_faccessat
-# include "xmalloc.h"
# include <fcntl.h>
# include <stdio.h>
# include <unistd.h>
-# ifndef FD_PATH
+# include "secontext.h"
+# include "xmalloc.h"
+
+# ifdef FD_PATH
+# define YFLAG
+# else
# define FD_PATH ""
# endif
# ifndef SKIP_IF_PROC_IS_UNAVAILABLE
@@ -43,11 +47,130 @@
return rc;
}
+# ifndef PATH_TRACING
+static void
+tests_with_existing_file(void)
+{
+ /*
+ * Make sure the current workdir of the tracee
+ * is different from the current workdir of the tracer.
+ */
+ create_and_enter_subdir("faccessat_subdir");
+
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ k_faccessat(-1, NULL, F_OK);
+ printf("%s%s(-1, NULL, F_OK) = %s\n",
+ my_secontext, "faccessat", errstr);
+
+ static const char sample[] = "faccessat_sample";
+ (void) unlink(sample);
+ int fd = open(sample, O_CREAT|O_RDONLY, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ k_faccessat(-100, sample, F_OK);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, F_OK) = %s\n",
+ my_secontext, "faccessat",
+ sample, sample_secontext,
+ errstr);
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ k_faccessat(-100, sample, F_OK);
+ printf("%s%s(AT_FDCWD, \"%s\", F_OK) = %s\n",
+ my_secontext, "faccessat",
+ sample,
+ errstr);
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ k_faccessat(cwd_fd, sample, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\", F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\", F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample,
+ errstr);
+
+ fd = open(sample, O_CREAT|O_RDONLY, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+
+ k_faccessat(cwd_fd, sample, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample, sample_secontext,
+ errstr);
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ k_faccessat(cwd_fd, sample_realpath, F_OK);
+# ifdef YFLAG
+ printf("%s%s(%d<%s>%s, \"%s\"%s, F_OK) = %s\n",
+# else
+ printf("%s%s(%d%s, \"%s\"%s, F_OK) = %s\n",
+# endif
+ my_secontext, "faccessat",
+ cwd_fd,
+# ifdef YFLAG
+ cwd,
+# endif
+ cwd_secontext,
+ sample_realpath, sample_secontext,
+ errstr);
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
+ leave_and_remove_subdir();
+}
+# endif
+
int
main(void)
{
SKIP_IF_PROC_IS_UNAVAILABLE;
+# ifndef TEST_SECONTEXT
+
TAIL_ALLOC_OBJECT_CONST_PTR(const char, unterminated);
char *unterminated_str = xasprintf("%p", unterminated);
const void *const efault = unterminated + 1;
@@ -120,10 +243,10 @@
k_faccessat(dirfds[dirfd_i].val,
paths[path_i].val,
modes[mode_i].val);
-# ifdef PATH_TRACING
+# ifdef PATH_TRACING
if (dirfds[dirfd_i].val == fd ||
paths[path_i].val == fd_path)
-# endif
+# endif
printf("faccessat(%s, %s, %s) = %s\n",
dirfds[dirfd_i].str,
paths[path_i].str,
@@ -133,6 +256,12 @@
}
}
+# endif /* !TEST_SECONTEXT */
+
+# ifndef PATH_TRACING
+ tests_with_existing_file();
+# endif
+
puts("+++ exited with 0 +++");
return 0;
}
Index: strace-5.7/tests-mx32/faccessat.test
===================================================================
--- strace-5.7.orig/tests-mx32/faccessat.test 2021-08-24 21:08:35.395312553 +0200
+++ strace-5.7/tests-mx32/faccessat.test 2021-08-24 21:08:43.276245849 +0200
@@ -15,5 +15,5 @@
run_strace -a23 --trace=faccessat "$@" $args > "$EXP"
# Filter out faccessat() calls made by ld.so and libc.
-sed -n '/^faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
+sed -n '/faccessat(-1, NULL,/,$p' < "$LOG" > "$OUT"
match_diff "$OUT" "$EXP"
Index: strace-5.7/tests-mx32/fanotify_mark.c
===================================================================
--- strace-5.7.orig/tests-mx32/fanotify_mark.c 2021-08-24 21:07:01.122112055 +0200
+++ strace-5.7/tests-mx32/fanotify_mark.c 2021-08-24 21:08:43.276245849 +0200
@@ -3,7 +3,7 @@
*
* Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
* Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
- * Copyright (c) 2015-2020 The strace developers.
+ * Copyright (c) 2015-2021 The strace developers.
* All rights reserved.
*
* SPDX-License-Identifier: GPL-2.0-or-later
@@ -21,6 +21,8 @@
# include <unistd.h>
# include <sys/fanotify.h>
+# include "secontext.h"
+
# if XLAT_RAW
# define str_fan_mark_add "0x1"
# define str_fan_modify_ondir "0x40000002"
@@ -35,6 +37,7 @@
# define str_at_fdcwd "AT_FDCWD"
# endif
+# ifndef TEST_SECONTEXT
/* Performs fanotify_mark call via the syscall interface. */
static void
do_call(kernel_ulong_t fd, kernel_ulong_t flags, const char *flags_str,
@@ -44,18 +47,18 @@
long rc;
rc = syscall(__NR_fanotify_mark, fd, flags,
-# if (LONG_MAX > INT_MAX) \
- || (defined __x86_64__ && defined __ILP32__) \
- || defined LINUX_MIPSN32
+# if (LONG_MAX > INT_MAX) \
+ || (defined __x86_64__ && defined __ILP32__) \
+ || defined LINUX_MIPSN32
mask,
-# else
+# else
/* arch/parisc/kernel/sys_parisc32.c, commit ab8a261b */
-# ifdef HPPA
+# ifdef HPPA
LL_VAL_TO_PAIR((mask << 32) | (mask >> 32)),
-# else
+# else
LL_VAL_TO_PAIR(mask),
+# endif
# endif
-# endif
dirfd, path);
printf("fanotify_mark(%d, %s, %s, %s, %s) = %s\n",
@@ -68,12 +71,14 @@
const char *str;
};
-# define STR16 "0123456789abcdef"
-# define STR64 STR16 STR16 STR16 STR16
+# define STR16 "0123456789abcdef"
+# define STR64 STR16 STR16 STR16 STR16
+# endif /* !TEST_SECONTEXT */
int
main(void)
{
+# ifndef TEST_SECONTEXT
enum {
PATH1_SIZE = 64,
};
@@ -87,47 +92,47 @@
{ F8ILL_KULONG_MASK, "0" },
{ (kernel_ulong_t) 0xdec0deddefacec00ULL,
"0xefacec00"
-# if !XLAT_RAW
+# if !XLAT_RAW
" /* FAN_MARK_??? */"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xda7a105700000040ULL,
-# if XLAT_RAW
+# if XLAT_RAW
"0x40"
-# elif XLAT_VERBOSE
+# elif XLAT_VERBOSE
"0x40 /* FAN_MARK_IGNORED_SURV_MODIFY */"
-# else
+# else
"FAN_MARK_IGNORED_SURV_MODIFY"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xbadc0deddeadffffULL,
-# if XLAT_RAW || XLAT_VERBOSE
+# if XLAT_RAW || XLAT_VERBOSE
"0xdeadffff"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" /* "
-# endif
-# if !XLAT_RAW
+# endif
+# if !XLAT_RAW
"FAN_MARK_ADD|FAN_MARK_REMOVE|FAN_MARK_DONT_FOLLOW|"
"FAN_MARK_ONLYDIR|FAN_MARK_MOUNT|FAN_MARK_IGNORED_MASK|"
"FAN_MARK_IGNORED_SURV_MODIFY|FAN_MARK_FLUSH|"
"FAN_MARK_FILESYSTEM|0xdeadfe00"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" */"
-# endif
+# endif
},
};
static const struct strval64 masks[] = {
{ ARG_ULL_STR(0) },
{ 0xdeadfeedffffffffULL,
-# if XLAT_RAW || XLAT_VERBOSE
+# if XLAT_RAW || XLAT_VERBOSE
"0xdeadfeedffffffff"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" /* "
-# endif
-# if !XLAT_RAW
+# endif
+# if !XLAT_RAW
"FAN_ACCESS|"
"FAN_MODIFY|"
"FAN_ATTRIB|"
@@ -149,27 +154,27 @@
"FAN_ONDIR|"
"FAN_EVENT_ON_CHILD|"
"0xdeadfeedb7f0a000"
-# endif
-# if XLAT_VERBOSE
+# endif
+# if XLAT_VERBOSE
" */"
-# endif
+# endif
},
{ ARG_ULL_STR(0xffffffffb7f0a000)
-# if !XLAT_RAW
+# if !XLAT_RAW
" /* FAN_??? */"
-# endif
+# endif
},
};
static const struct strval dirfds[] = {
{ (kernel_ulong_t) 0xfacefeed00000001ULL, "1" },
{ (kernel_ulong_t) 0xdec0ded0ffffffffULL,
-# if XLAT_RAW
+# if XLAT_RAW
"-1"
-# elif XLAT_VERBOSE
+# elif XLAT_VERBOSE
"-1 /* FAN_NOFD */"
-# else
+# else
"FAN_NOFD"
-# endif
+# endif
},
{ (kernel_ulong_t) 0xbadfacedffffff9cULL, str_at_fdcwd },
{ (kernel_ulong_t) 0xdefaced1beeff00dULL, "-1091571699" },
@@ -202,12 +207,6 @@
snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
bogus_path1 + PATH1_SIZE);
- rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
- -100, ".");
- printf("fanotify_mark(-1, %s, %s, %s, \".\") = %s\n",
- str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd,
- sprintrc(rc));
-
for (i = 0; i < ARRAY_SIZE(fds); i++) {
for (j = 0; j < ARRAY_SIZE(flags); j++) {
for (k = 0; k < ARRAY_SIZE(masks); k++) {
@@ -226,6 +225,40 @@
}
}
}
+# else /* TEST_SECONTEXT */
+ int rc;
+# endif
+ /*
+ * Test with AT_FDCWD.
+ */
+
+ char *my_secontext = SECONTEXT_PID_MY();
+ char path[] = ".";
+ char *path_secontext = SECONTEXT_FILE(path);
+
+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+ -100, path);
+ printf("%s%s(-1, %s, %s, %s, \"%s\"%s) = %s\n",
+ my_secontext, "fanotify_mark",
+ str_fan_mark_add, str_fan_modify_ondir, str_at_fdcwd,
+ path, path_secontext,
+ sprintrc(rc));
+
+ /*
+ * Test with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ rc = fanotify_mark(-1, FAN_MARK_ADD, FAN_MODIFY | FAN_ONDIR,
+ cwd_fd, path);
+ printf("%s%s(-1, %s, %s, %d%s, \"%s\"%s) = %s\n",
+ my_secontext, "fanotify_mark",
+ str_fan_mark_add, str_fan_modify_ondir,
+ cwd_fd, cwd_secontext,
+ path, path_secontext,
+ sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
Index: strace-5.7/tests-mx32/fchmod.c
===================================================================
--- strace-5.7.orig/tests-mx32/fchmod.c 2021-08-24 21:08:35.395312553 +0200
+++ strace-5.7/tests-mx32/fchmod.c 2021-08-24 21:08:43.277245841 +0200
@@ -18,6 +18,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -27,6 +29,8 @@
*/
create_and_enter_subdir("fchmod_subdir");
+ char *my_secontext = SECONTEXT_PID_MY();
+
static const char sample[] = "fchmod_sample_file";
(void) unlink(sample);
int fd = open(sample, O_CREAT|O_RDONLY, 0400);
@@ -37,16 +41,19 @@
char *sample_realpath = get_fd_path(fd);
# endif
+ const char *sample_secontext = SECONTEXT_FILE(sample);
long rc = syscall(__NR_fchmod, fd, 0600);
# ifdef YFLAG
- printf("fchmod(%d<%s>, 0600) = %s\n",
+ printf("%s%s(%d<%s>%s, 0600) = %s\n",
# else
- printf("fchmod(%d, 0600) = %s\n",
+ printf("%s%s(%d%s, 0600) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
if (unlink(sample))
@@ -54,26 +61,30 @@
rc = syscall(__NR_fchmod, fd, 051);
# ifdef YFLAG
- printf("fchmod(%d<%s (deleted)>, 051) = %s\n",
+ printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n",
# else
- printf("fchmod(%d, 051) = %s\n",
+ printf("%s%s(%d%s, 051) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
rc = syscall(__NR_fchmod, fd, 004);
# ifdef YFLAG
- printf("fchmod(%d<%s (deleted)>, 004) = %s\n",
+ printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n",
# else
- printf("fchmod(%d, 004) = %s\n",
+ printf("%s%s(%d%s, 004) = %s\n",
# endif
+ my_secontext, "fchmod",
fd,
# ifdef YFLAG
sample_realpath,
# endif
+ sample_secontext,
sprintrc(rc));
leave_and_remove_subdir();
Index: strace-5.7/tests-mx32/fchmodat.c
===================================================================
--- strace-5.7.orig/tests-mx32/fchmodat.c 2021-08-24 21:08:35.396312544 +0200
+++ strace-5.7/tests-mx32/fchmodat.c 2021-08-24 21:08:43.277245841 +0200
@@ -17,6 +17,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -26,26 +28,81 @@
*/
create_and_enter_subdir("fchmodat_subdir");
- static const char sample[] = "fchmodat_sample";
+ char *my_secontext = SECONTEXT_PID_MY();
+ static const char sample[] = "fchmodat_sample_file";
if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
perror_msg_and_fail("open");
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
long rc = syscall(__NR_fchmodat, -100, sample, 0600);
- printf("fchmodat(AT_FDCWD, \"%s\", 0600) = %s\n",
- sample, sprintrc(rc));
+ printf("%s%s(AT_FDCWD, \"%s\"%s, 0600) = %s\n",
+ my_secontext, "fchmodat",
+ sample, sample_secontext,
+ sprintrc(rc));
if (unlink(sample))
perror_msg_and_fail("unlink");
rc = syscall(__NR_fchmodat, -100, sample, 051);
- printf("fchmodat(AT_FDCWD, \"%s\", 051) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", 051) = %s\n",
+ my_secontext, "fchmodat",
sample, sprintrc(rc));
rc = syscall(__NR_fchmodat, -100, sample, 004);
- printf("fchmodat(AT_FDCWD, \"%s\", 004) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", 004) = %s\n",
+ my_secontext, "fchmodat",
sample, sprintrc(rc));
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400);
+ printf("%s%s(%d%s, \"%s\", 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample,
+ sprintrc(rc));
+
+ if (open(sample, O_RDONLY | O_CREAT, 0400) < 0)
+ perror_msg_and_fail("open");
+
+ rc = syscall(__NR_fchmodat, cwd_fd, sample, 0400);
+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_fchmodat, cwd_fd, sample_realpath, 0400);
+ printf("%s%s(%d%s, \"%s\"%s, 0400) = %s\n",
+ my_secontext, "fchmodat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests-mx32/fchownat.c
===================================================================
--- strace-5.7.orig/tests-mx32/fchownat.c 2021-08-24 21:08:35.396312544 +0200
+++ strace-5.7/tests-mx32/fchownat.c 2021-08-24 21:08:43.277245841 +0200
@@ -17,6 +17,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -26,25 +28,86 @@
*/
create_and_enter_subdir("fchownat_subdir");
- static const char sample[] = "fchownat_sample";
+ char *my_secontext = SECONTEXT_PID_MY();
uid_t uid = geteuid();
uid_t gid = getegid();
- if (open(sample, O_RDONLY | O_CREAT, 0400) == -1)
+ static const char sample[] = "fchownat_sample";
+ int fd = open(sample, O_RDONLY | O_CREAT, 0400);
+ if (fd == -1)
perror_msg_and_fail("open");
+ close(fd);
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
long rc = syscall(__NR_fchownat, AT_FDCWD, sample, uid, gid, 0);
- printf("fchownat(AT_FDCWD, \"%s\", %d, %d, 0) = %s\n",
- sample, uid, gid, sprintrc(rc));
+ printf("%s%s(AT_FDCWD, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ sample, sample_secontext,
+ uid, gid, sprintrc(rc));
if (unlink(sample))
perror_msg_and_fail("unlink");
rc = syscall(__NR_fchownat, AT_FDCWD,
sample, -1, -1L, AT_SYMLINK_NOFOLLOW);
- printf("fchownat(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n",
+ printf("%s%s(AT_FDCWD, \"%s\", -1, -1, AT_SYMLINK_NOFOLLOW) = %s\n",
+ my_secontext, "fchownat",
sample, sprintrc(rc));
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+ char *sample_realpath = xasprintf("%s/%s", cwd, sample);
+
+ /* no file */
+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\", %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample,
+ uid, gid,
+ sprintrc(rc));
+
+ fd = open(sample, O_RDONLY | O_CREAT, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("open");
+ close(fd);
+
+ rc = syscall(__NR_fchownat, cwd_fd, sample, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ uid, gid,
+ sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_fchownat, cwd_fd, sample_realpath, uid, gid, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d, %d, 0) = %s\n",
+ my_secontext, "fchownat",
+ cwd_fd, cwd_secontext,
+ sample_realpath, sample_secontext,
+ uid, gid,
+ sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests-mx32/file_handle.c
===================================================================
--- strace-5.7.orig/tests-mx32/file_handle.c 2021-08-24 21:08:35.396312544 +0200
+++ strace-5.7/tests-mx32/file_handle.c 2021-08-24 21:08:43.277245841 +0200
@@ -21,6 +21,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
enum assert_rc {
ASSERT_NONE,
ASSERT_SUCCESS,
@@ -48,6 +50,7 @@
printf("...");
}
+# ifndef TEST_SECONTEXT
void
do_name_to_handle_at(kernel_ulong_t dirfd, const char *dirfd_str,
kernel_ulong_t pathname, const char *pathname_str,
@@ -129,6 +132,7 @@
printf("%s\n", sprintrc(rc));
}
+# endif /* !TEST_SECONTEXT */
struct strval {
kernel_ulong_t val;
@@ -141,12 +145,86 @@
int
main(void)
{
+ char *my_secontext = SECONTEXT_PID_MY();
enum {
PATH1_SIZE = 64,
};
static const kernel_ulong_t fdcwd =
(kernel_ulong_t) 0x87654321ffffff9cULL;
+
+ struct file_handle *handle =
+ tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ);
+ struct file_handle *handle_0 =
+ tail_alloc(sizeof(struct file_handle) + 0);
+ struct file_handle *handle_8 =
+ tail_alloc(sizeof(struct file_handle) + 8);
+ struct file_handle *handle_128 =
+ tail_alloc(sizeof(struct file_handle) + 128);
+ struct file_handle *handle_256 =
+ tail_alloc(sizeof(struct file_handle) + 256);
+ TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
+
+ char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
+
+ const int flags = 0x400;
+ int mount_id;
+
+ handle_0->handle_bytes = 256;
+ handle_8->handle_bytes = 0;
+ handle_128->handle_bytes = 128;
+ handle_256->handle_bytes = 256;
+
+ fill_memory((char *) handle_128 + sizeof(struct file_handle), 128);
+ fill_memory((char *) handle_256 + sizeof(struct file_handle), 256);
+
+ snprintf(handle_0_addr, sizeof(handle_0_addr), "%p",
+ handle_0 + sizeof(struct file_handle));
+
+ handle->handle_bytes = 0;
+
+ char path[] = ".";
+ char *path_secontext = SECONTEXT_FILE(path);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags | 1) == -1);
+ if (EINVAL != errno)
+ perror_msg_and_skip("name_to_handle_at");
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0}, %p"
+ ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ &mount_id);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags) == -1);
+ if (EOVERFLOW != errno)
+ perror_msg_and_skip("name_to_handle_at");
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=0 => %u}"
+ ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ handle->handle_bytes, &mount_id);
+
+ assert(syscall(__NR_name_to_handle_at, fdcwd, path, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, {handle_bytes=%u"
+ ", handle_type=%d, f_handle=",
+ my_secontext, "name_to_handle_at",
+ path, path_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data(handle->f_handle, handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data(handle->f_handle, handle->handle_bytes);
+ int rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name());
+
+# ifndef TEST_SECONTEXT
static const struct strval dirfds[] = {
{ (kernel_ulong_t) 0xdeadca57badda7a1ULL, "-1159878751" },
{ (kernel_ulong_t) 0x12345678ffffff9cULL, "AT_FDCWD" },
@@ -171,29 +249,11 @@
};
static const char str64[] = STR64;
-
-
char *bogus_path1 = tail_memdup(str64, PATH1_SIZE);
char *bogus_path2 = tail_memdup(str64, sizeof(str64));
-
- struct file_handle *handle =
- tail_alloc(sizeof(struct file_handle) + MAX_HANDLE_SZ);
- struct file_handle *handle_0 =
- tail_alloc(sizeof(struct file_handle) + 0);
- struct file_handle *handle_8 =
- tail_alloc(sizeof(struct file_handle) + 8);
- struct file_handle *handle_128 =
- tail_alloc(sizeof(struct file_handle) + 128);
- struct file_handle *handle_256 =
- tail_alloc(sizeof(struct file_handle) + 256);
- TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
-
- char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
-
char bogus_path1_addr[sizeof("0x") + sizeof(void *) * 2];
char bogus_path1_after_addr[sizeof("0x") + sizeof(void *) * 2];
-
struct strval paths[] = {
{ (kernel_ulong_t) 0, "NULL" },
{ (kernel_ulong_t) (uintptr_t) (bogus_path1 + PATH1_SIZE),
@@ -229,62 +289,16 @@
(kernel_ulong_t) (uintptr_t) bogus_mount_id,
};
- const int flags = 0x400;
- int mount_id;
unsigned int i;
unsigned int j;
unsigned int k;
unsigned int l;
unsigned int m;
-
snprintf(bogus_path1_addr, sizeof(bogus_path1_addr), "%p", bogus_path1);
snprintf(bogus_path1_after_addr, sizeof(bogus_path1_after_addr), "%p",
bogus_path1 + PATH1_SIZE);
- handle_0->handle_bytes = 256;
- handle_8->handle_bytes = 0;
- handle_128->handle_bytes = 128;
- handle_256->handle_bytes = 256;
-
- fill_memory((char *) handle_128 + sizeof(struct file_handle), 128);
- fill_memory((char *) handle_256 + sizeof(struct file_handle), 256);
-
- snprintf(handle_0_addr, sizeof(handle_0_addr), "%p",
- handle_0 + sizeof(struct file_handle));
-
- handle->handle_bytes = 0;
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags | 1) == -1);
- if (EINVAL != errno)
- perror_msg_and_skip("name_to_handle_at");
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0}, %p"
- ", AT_SYMLINK_FOLLOW|0x1) = -1 EINVAL (%m)\n", &mount_id);
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags) == -1);
- if (EOVERFLOW != errno)
- perror_msg_and_skip("name_to_handle_at");
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=0 => %u}"
- ", %p, AT_SYMLINK_FOLLOW) = -1 EOVERFLOW (%m)\n",
- handle->handle_bytes, &mount_id);
-
- assert(syscall(__NR_name_to_handle_at, fdcwd, ".", handle, &mount_id,
- flags) == 0);
- printf("name_to_handle_at(AT_FDCWD, \".\", {handle_bytes=%u"
- ", handle_type=%d, f_handle=",
- handle->handle_bytes, handle->handle_type);
- print_handle_data(handle->f_handle, handle->handle_bytes);
- printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
-
- printf("open_by_handle_at(-1, {handle_bytes=%u, handle_type=%d"
- ", f_handle=", handle->handle_bytes, handle->handle_type);
- print_handle_data(handle->f_handle, handle->handle_bytes);
- int rc = syscall(__NR_open_by_handle_at, -1, handle,
- O_RDONLY | O_DIRECTORY);
- printf("}, O_RDONLY|O_DIRECTORY) = %d %s (%m)\n", rc, errno2name());
-
for (i = 0; i < ARRAY_SIZE(dirfds); i++) {
for (j = 0; j < ARRAY_SIZE(paths); j++) {
for (k = 0; k < ARRAY_SIZE(name_handles); k++) {
@@ -320,6 +334,68 @@
}
}
}
+# endif
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd = get_fd_path(cwd_fd);
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ assert(syscall(__NR_name_to_handle_at, cwd_fd, path, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u, handle_type=%d"
+ ", f_handle=",
+ my_secontext, "name_to_handle_at",
+ cwd_fd, cwd_secontext,
+ path, path_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc));
+
+ /* cwd_fd ignored when path is absolute */
+ if (chdir(".."))
+ perror_msg_and_fail("chdir");
+
+ assert(syscall(__NR_name_to_handle_at, cwd_fd, cwd, handle, &mount_id,
+ flags) == 0);
+ printf("%s%s(%d%s, \"%s\"%s, {handle_bytes=%u"
+ ", handle_type=%d, f_handle=",
+ my_secontext, "name_to_handle_at",
+ cwd_fd, cwd_secontext,
+ cwd, cwd_secontext,
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ printf("}, [%d], AT_SYMLINK_FOLLOW) = 0\n", mount_id);
+
+ printf("%s%s(-1, {handle_bytes=%u, handle_type=%d, f_handle=",
+ my_secontext, "open_by_handle_at",
+ handle->handle_bytes, handle->handle_type);
+ print_handle_data((unsigned char *) handle +
+ sizeof(struct file_handle),
+ handle->handle_bytes);
+ rc = syscall(__NR_open_by_handle_at, -1, handle,
+ O_RDONLY | O_DIRECTORY);
+ printf("}, O_RDONLY|O_DIRECTORY) = %s\n", sprintrc(rc));
+
+ if (fchdir(cwd_fd))
+ perror_msg_and_fail("fchdir");
puts("+++ exited with 0 +++");
return 0;
Index: strace-5.7/tests-mx32/gen_secontext.sh
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/gen_secontext.sh 2021-08-24 21:08:43.277245841 +0200
@@ -0,0 +1,72 @@
+#!/bin/sh -efu
+#
+# Copyright (c) 2021 The strace developers.
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+usage()
+{
+ cat >&2 <<EOF
+Usage: $0 [<input>]
+
+Generate secontext files from <input> list.
+EOF
+ exit 1
+}
+
+if [ $# -eq 0 ]; then
+ input="${0%/*}/gen_tests.in"
+else
+ input="$1"
+ shift
+fi
+dir="$(dirname "$input")"
+[ $# -eq 0 ] || usage
+
+{
+ cat <<EOF
+# Generated by $0 from $input; do not edit.
+
+secontext_EXECUTABLES = \\
+EOF
+ sed -r -n 's/^([^#[:space:]]+--secontext(_full)?)[[:space:]].*/ \1 \\/p' < "$input"
+ cat <<EOF
+ #
+
+EOF
+ sed -r -n 's/-/_/g; s/^([^#[:space:]]+__secontext(_full)?)[[:space:]].*/\1_LDADD = \$(LDADD) \$(libselinux_LDADD)/p' < "$input"
+} > "$dir/secontext.am"
+
+sed -r -n 's/^([^#[:space:]]+--secontext)[[:space:]].*/\1/p' < "$input" |
+while read -r name; do {
+ cat <<-EOF > "$dir/$name.c"
+ /*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+ #include "tests.h"
+
+ #ifdef HAVE_SELINUX_RUNTIME
+
+ # define TEST_SECONTEXT
+ # include "${name%--secontext}.c"
+
+ #else
+
+ SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+ #endif
+ EOF
+} < /dev/null; done
+
+sed -r -n 's/^([^#[:space:]]+--secontext_full)[[:space:]].*/\1/p' < "$input" |
+while read -r name; do {
+ cat <<-EOF > "$dir/$name.c"
+ #define PRINT_SECONTEXT_FULL
+ #include "${name%_full}.c"
+ EOF
+} < /dev/null; done
Index: strace-5.7/tests-mx32/gen_tests.in
===================================================================
--- strace-5.7.orig/tests-mx32/gen_tests.in 2021-08-24 21:08:35.397312536 +0200
+++ strace-5.7/tests-mx32/gen_tests.in 2021-08-24 21:08:43.278245832 +0200
@@ -10,6 +10,8 @@
accept -a22
accept4 -a37
access -a30 --trace-path=access_sample
+access--secontext -a30 --secontext --trace-path=access_sample -e trace=access
+access--secontext_full -a30 --secontext=full --trace-path=access_sample -e trace=access
acct -a20
add_key -a30 -s12
adjtimex -a15
@@ -24,6 +26,8 @@
bpf-v -a20 -v -e trace=bpf
btrfs +ioctl.test
chmod -a28
+chmod--secontext -a28 --secontext -e trace=chmod
+chmod--secontext_full -a28 --secontext=full -e trace=chmod
chown -a28
chown32 -a31
chroot -a24
@@ -71,25 +75,43 @@
epoll_pwait
epoll_wait -a26
erestartsys -a34 -e signal=none -e trace=recvfrom
+execve--secontext +execve.test --secontext
+execve--secontext_full +execve.test --secontext=full
execveat
+execveat--secontext --secontext --trace=execveat
+execveat--secontext_full --secontext=full --trace=execveat
execveat-v -v -e trace=execveat
+faccessat--secontext +faccessat.test -a24 --secontext
+faccessat--secontext_full +faccessat.test -a24 --secontext=full
faccessat-P -a23 --trace=faccessat -P /dev/full
faccessat-y +faccessat.test -a24 -y
+faccessat-y--secontext +faccessat.test -a24 -y --secontext
+faccessat-y--secontext_full +faccessat.test -a24 -y --secontext=full
faccessat-yy +faccessat.test -a24 -yy
fadvise64_64 +fadvise64.test
fallocate -a18
fanotify_init
fanotify_mark -a32
+fanotify_mark--secontext -a32 --secontext -e trace=fanotify_mark
+fanotify_mark--secontext_full -a32 --secontext=full -e trace=fanotify_mark
fanotify_mark-Xabbrev -a32 -Xabbrev -e trace=fanotify_mark
fanotify_mark-Xraw -a32 -Xraw -e trace=fanotify_mark
fanotify_mark-Xverbose -a32 -Xverbose -e trace=fanotify_mark
fchdir -a11
fchmod -a15
+fchmod--secontext -a15 --secontext -e trace=fchmod
+fchmod--secontext_full -a15 --secontext=full -e trace=fchmod
fchmod-y -y -e trace=fchmod
+fchmod-y--secontext -a15 -y --secontext -e trace=fchmod
+fchmod-y--secontext_full -a15 -y --secontext=full -e trace=fchmod
fchmodat
+fchmodat--secontext --secontext -e trace=fchmodat
+fchmodat--secontext_full --secontext=full -e trace=fchmodat
fchown -a16
fchown32 -a18
fchownat
+fchownat--secontext --secontext -e trace=fchownat
+fchownat--secontext_full --secontext=full -e trace=fchownat
fcntl -a8
fcntl--pidns-translation test_pidns -a8 -e trace=fcntl
fcntl64 -a8
@@ -97,6 +119,8 @@
fdatasync -a14
file_handle -e trace=name_to_handle_at,open_by_handle_at
file_ioctl +ioctl.test
+file_handle--secontext --secontext -e trace=name_to_handle_at,open_by_handle_at
+file_handle--secontext_full --secontext=full -e trace=name_to_handle_at,open_by_handle_at
filter_seccomp . "${srcdir=.}/filter_seccomp.sh"; test_prog_set --seccomp-bpf -f
filter_seccomp-flag ../$NAME
finit_module -a25
@@ -295,6 +319,8 @@
lchown32 -a32
link
linkat
+linkat--secontext --secontext -e trace=linkat
+linkat--secontext_full --secontext=full -e trace=linkat
lookup_dcookie -a27
lstat -a31 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
lstat64 -a32 --no-abbrev --trace-path=stat.sample --trace-path=/dev/full
@@ -434,9 +460,13 @@
oldselect-efault-P -a13 -e trace=select -P /dev/full 9>>/dev/full
oldstat -a32 -v -P stat.sample -P /dev/full
open -a30 -P $NAME.sample
+open--secontext -a30 -P open.sample --secontext --trace=open
+open--secontext_full -a30 -P open.sample --secontext=full --trace=open
open_tree -a30 -y
open_tree-P -a30 --decode-fds -P /dev/full -e trace=open_tree
openat -a36 -P $NAME.sample
+openat--secontext -a36 -P openat.sample -P $PWD/openat.sample --secontext -e trace=openat
+openat--secontext_full -a36 -P openat.sample -P $PWD/openat.sample --secontext=full -e trace=openat
openat2 -a35
openat2-Xabbrev --trace=openat2 -a35 -Xabbrev
openat2-Xraw --trace=openat2 -a32 -Xraw
Index: strace-5.7/tests-mx32/linkat.c
===================================================================
--- strace-5.7.orig/tests-mx32/linkat.c 2021-08-24 21:08:35.397312536 +0200
+++ strace-5.7/tests-mx32/linkat.c 2021-08-24 21:08:43.278245832 +0200
@@ -10,8 +10,14 @@
#ifdef __NR_linkat
+# include <fcntl.h>
# include <stdio.h>
+# include <stdlib.h>
# include <unistd.h>
+# include <sys/stat.h>
+
+# include "secontext.h"
+# include "xmalloc.h"
int
main(void)
@@ -27,18 +33,158 @@
const long fd_old = (long) 0xdeadbeefffffffffULL;
const long fd_new = (long) 0xdeadbeeffffffffeULL;
+ char *my_secontext = SECONTEXT_PID_MY();
+
+ (void) unlink(sample_1);
+ (void) unlink(sample_2);
+
long rc = syscall(__NR_linkat, fd_old, sample_1, fd_new, sample_2, 0);
- printf("linkat(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n",
+ printf("%s%s(%d, \"%s\", %d, \"%s\", 0) = %ld %s (%m)\n",
+ my_secontext, "linkat",
(int) fd_old, sample_1, (int) fd_new, sample_2,
rc, errno2name());
rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, -1L);
- printf("linkat(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
+ printf("%s%s(%s, \"%s\", %s, \"%s\", %s) = %ld %s (%m)\n",
+ my_secontext, "linkat",
"AT_FDCWD", sample_1, "AT_FDCWD", sample_2,
"AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
"|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|AT_RECURSIVE|0xffff60ff",
rc, errno2name());
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ int fd_sample_1 = open(sample_1, O_RDONLY | O_CREAT, 0400);
+ if (fd_sample_1 < 0)
+ perror_msg_and_fail("open");
+ if (close(fd_sample_1))
+ perror_msg_and_fail("close");
+
+ char *sample_1_secontext = SECONTEXT_FILE(sample_1);
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ const char *sample_2_secontext = sample_1_secontext;
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ int fd_sample_2 = open(sample_2, O_RDONLY | O_CREAT, 0400);
+ if (fd_sample_2 < 0)
+ perror_msg_and_fail("open");
+ if (close(fd_sample_2))
+ perror_msg_and_fail("close");
+
+ free(sample_1_secontext);
+ update_secontext_type(sample_1, "default_t");
+ sample_1_secontext = SECONTEXT_FILE(sample_1);
+ sample_2_secontext = sample_1_secontext;
+
+ rc = syscall(__NR_linkat, -100, sample_1, -100, sample_2, 0);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ if (unlink(sample_2))
+ perror_msg_and_fail("unlink: %s", sample_2);
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int dfd_old = get_dir_fd(".");
+ char *cwd = get_fd_path(dfd_old);
+ char *dfd_old_secontext = SECONTEXT_FILE(".");
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, sample_2, 0);
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ sample_2, sample_2_secontext,
+ sprintrc(rc));
+
+ if (unlink(sample_2))
+ perror_msg_and_fail("unlink: %s", sample_2);
+
+ static const char new_dir[] = "new";
+ char *new_sample_2 = xasprintf("%s/%s", new_dir, sample_2);
+
+ (void) unlink(new_sample_2);
+ (void) rmdir(new_dir);
+
+ if (mkdir(new_dir, 0700))
+ perror_msg_and_fail("mkdir");
+ char *new_dir_realpath = xasprintf("%s/%s", cwd, new_dir);
+ char *new_dir_secontext = SECONTEXT_FILE(new_dir);
+ int dfd_new = get_dir_fd(new_dir);
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0);
+ /* no context printed for sample_2 since file doesn't exist yet */
+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\", 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ dfd_new, new_dir_secontext,
+ sample_2,
+ sprintrc(rc));
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, dfd_new, sample_2, 0);
+ printf("%s%s(%d%s, \"%s\"%s, %d%s, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ dfd_new, new_dir_secontext,
+ sample_2, SECONTEXT_FILE(new_sample_2),
+ sprintrc(rc));
+
+ char *new_sample_2_realpath = xasprintf("%s/%s", new_dir_realpath, sample_2);
+
+ /* dfd ignored when path is absolute */
+ if (chdir("../.."))
+ perror_msg_and_fail("chdir");
+
+ rc = syscall(__NR_linkat, dfd_old, sample_1, -100, new_sample_2_realpath, 0);
+ printf("%s%s(%d%s, \"%s\"%s, AT_FDCWD, \"%s\"%s, 0) = %s\n",
+ my_secontext, "linkat",
+ dfd_old, dfd_old_secontext,
+ sample_1, sample_1_secontext,
+ new_sample_2_realpath, SECONTEXT_FILE(new_sample_2_realpath),
+ sprintrc(rc));
+
+ if (fchdir(dfd_old))
+ perror_msg_and_fail("fchdir");
+
+ if (unlink(sample_1))
+ perror_msg_and_fail("unlink: %s", sample_1);
+ if (unlink(new_sample_2))
+ perror_msg_and_fail("unlink: %s", new_sample_2);
+ if (rmdir(new_dir))
+ perror_msg_and_fail("rmdir: %s", new_dir);
+
leave_and_remove_subdir();
puts("+++ exited with 0 +++");
Index: strace-5.7/tests-mx32/open.c
===================================================================
--- strace-5.7.orig/tests-mx32/open.c 2021-08-24 21:08:35.397312536 +0200
+++ strace-5.7/tests-mx32/open.c 2021-08-24 21:08:43.278245832 +0200
@@ -15,6 +15,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
int
main(void)
{
@@ -25,10 +27,12 @@
create_and_enter_subdir("open_subdir");
static const char sample[] = "open.sample";
+ char *my_secontext = SECONTEXT_PID_MY();
long fd = syscall(__NR_open, sample, O_RDONLY|O_CREAT, 0400);
- printf("open(\"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
- sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "open",
+ sample, sprintrc(fd), SECONTEXT_FILE(sample));
if (fd != -1) {
close(fd);
@@ -36,16 +40,18 @@
perror_msg_and_fail("unlink");
fd = syscall(__NR_open, sample, O_RDONLY);
- printf("open(\"%s\", O_RDONLY) = %s\n", sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_RDONLY) = %s\n",
+ my_secontext, "open", sample, sprintrc(fd));
fd = syscall(__NR_open, sample, O_WRONLY|O_NONBLOCK|0x80000000);
- printf("open(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n",
- sample, sprintrc(fd));
+ printf("%s%s(\"%s\", O_WRONLY|O_NONBLOCK|0x80000000) = %s\n",
+ my_secontext, "open", sample, sprintrc(fd));
}
# ifdef O_TMPFILE
fd = syscall(__NR_open, sample, O_WRONLY|O_TMPFILE, 0600);
- printf("open(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+ printf("%s%s(\"%s\", O_WRONLY|O_TMPFILE, 0600) = %s\n",
+ my_secontext, "open",
sample, sprintrc(fd));
# endif /* O_TMPFILE */
Index: strace-5.7/tests-mx32/openat.c
===================================================================
--- strace-5.7.orig/tests-mx32/openat.c 2021-08-24 21:08:35.397312536 +0200
+++ strace-5.7/tests-mx32/openat.c 2021-08-24 21:08:43.278245832 +0200
@@ -15,6 +15,8 @@
# include <stdio.h>
# include <unistd.h>
+# include "secontext.h"
+
# ifdef O_TMPFILE
/* The kernel & C libraries often inline O_DIRECTORY. */
# define STRACE_O_TMPFILE (O_TMPFILE & ~O_DIRECTORY)
@@ -26,10 +28,12 @@
static void
test_mode_flag(unsigned int mode_val, const char *mode_str,
- unsigned int flag_val, const char *flag_str)
+ unsigned int flag_val, const char *flag_str,
+ const char *my_secontext)
{
long rc = syscall(__NR_openat, -1, sample, mode_val | flag_val, 0);
- printf("openat(-1, \"%s\", %s%s%s%s) = %s\n",
+ printf("%s%s(-1, \"%s\", %s%s%s%s) = %s\n",
+ my_secontext, "openat",
sample, mode_str,
flag_val ? "|" : "", flag_str,
flag_val & (O_CREAT | STRACE_O_TMPFILE) ? ", 000" : "",
@@ -45,20 +49,7 @@
*/
create_and_enter_subdir("openat_subdir");
- long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
- printf("openat(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s\n",
- sample, sprintrc(fd));
-
- if (fd != -1) {
- close(fd);
- if (unlink(sample) == -1)
- perror_msg_and_fail("unlink");
-
- fd = syscall(__NR_openat, -100, sample, O_RDONLY);
- printf("openat(AT_FDCWD, \"%s\", O_RDONLY) = %s\n",
- sample, sprintrc(fd));
- }
-
+ char *my_secontext = SECONTEXT_PID_MY();
struct {
unsigned int val;
const char *str;
@@ -105,7 +96,73 @@
for (unsigned int m = 0; m < ARRAY_SIZE(modes); ++m)
for (unsigned int f = 0; f < ARRAY_SIZE(flags); ++f)
test_mode_flag(modes[m].val, modes[m].str,
- flags[f].val, flags[f].str);
+ flags[f].val, flags[f].str,
+ my_secontext);
+
+ /*
+ * Tests with AT_FDCWD.
+ */
+
+ (void) unlink(sample);
+ long fd = syscall(__NR_openat, -100, sample, O_RDONLY|O_CREAT, 0400);
+
+ char *sample_secontext = SECONTEXT_FILE(sample);
+
+ /*
+ * File context in openat() is not displayed because file doesn't exist
+ * yet, but is displayed in return value since the file got created.
+ */
+ printf("%s%s(AT_FDCWD, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "openat",
+ sample,
+ sprintrc(fd), sample_secontext);
+
+ close(fd);
+
+ fd = syscall(__NR_openat, -100, sample, O_RDONLY);
+ printf("%s%s(AT_FDCWD, \"%s\"%s, O_RDONLY) = %s%s\n",
+ my_secontext, "openat",
+ sample, sample_secontext,
+ sprintrc(fd), sample_secontext);
+ if (fd != -1) {
+ close(fd);
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+ }
+
+ /*
+ * Tests with dirfd.
+ */
+
+ int cwd_fd = get_dir_fd(".");
+ char *cwd_secontext = SECONTEXT_FILE(".");
+
+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY|O_CREAT, 0400);
+ if (fd == -1)
+ perror_msg_and_fail("openat");
+ close(fd);
+
+ /*
+ * File context in openat() is not displayed because file doesn't exist
+ * yet, but is displayed in return value since the file got created.
+ */
+ printf("%s%s(%d%s, \"%s\", O_RDONLY|O_CREAT, 0400) = %s%s\n",
+ my_secontext, "openat",
+ cwd_fd, cwd_secontext,
+ sample,
+ sprintrc(fd), sample_secontext);
+
+ fd = syscall(__NR_openat, cwd_fd, sample, O_RDONLY);
+ printf("%s%s(%d%s, \"%s\"%s, O_RDONLY) = %s%s\n",
+ my_secontext, "openat",
+ cwd_fd, cwd_secontext,
+ sample, sample_secontext,
+ sprintrc(fd), sample_secontext);
+ if (fd != -1) {
+ close(fd);
+ if (unlink(sample))
+ perror_msg_and_fail("unlink");
+ }
leave_and_remove_subdir();
Index: strace-5.7/tests-mx32/options-syntax.test
===================================================================
--- strace-5.7.orig/tests-mx32/options-syntax.test 2021-08-24 21:08:35.398312527 +0200
+++ strace-5.7/tests-mx32/options-syntax.test 2021-08-24 21:08:43.279245824 +0200
@@ -2,14 +2,16 @@
#
# Check strace options syntax.
#
-# Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
-# Copyright (c) 2016-2020 The strace developers.
+# Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
+# Copyright (c) 2016-2021 The strace developers.
# All rights reserved.
#
# SPDX-License-Identifier: GPL-2.0-or-later
. "${srcdir=.}/syntax.sh"
+compiled_with_secontext=$(get_config_option ENABLE_SECONTEXT "y")
+
check_e "Invalid process id: '0'" -p 0
check_e "Invalid process id: '0'" --attach=0
check_e "Invalid process id: '-42'" -p -42
@@ -46,6 +48,8 @@
check_e '-t and --absolute-timestamps cannot be provided simultaneously' --absolute-timestamps -ttt -p $$
check_e '-t and --absolute-timestamps cannot be provided simultaneously' -t --timestamps=ns -t -p $$
check_e '-t and --absolute-timestamps cannot be provided simultaneously' --timestamps=ns -t --absolute-timestamps=unix -p $$
+[ -z "$compiled_with_secontext" ] ||
+ check_h "invalid --secontext argument: 'ss'" --secontext=ss
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -D -p $$
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DD -p $$
check_h 'PROG [ARGS] must be specified with -D/--daemonize' -DDD -p $$
@@ -281,6 +285,11 @@
$STRACE_EXE: Only the last of -z/--successful-only/-Z/--failed-only options will take effect. See status qualifier for more complex filters.
$STRACE_EXE: $umsg" -u :nosuchuser: -cirtTyzZ true
+ if [ -n "$compiled_with_secontext" ]; then
+ check_e "--secontext has no effect with -c/--summary-only
+$STRACE_EXE: $umsg" -u :nosuchuser: -c --secontext true
+ fi
+
for c in --output-separately -A/--output-append-mode; do
check_e "$c has no effect without -o/--output
$STRACE_EXE: $umsg" -u :nosuchuser: ${c%%/*} true
Index: strace-5.7/tests-mx32/secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/secontext.c 2021-08-24 21:08:43.279245824 +0200
@@ -0,0 +1,201 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# include <assert.h>
+# include <errno.h>
+# include <stdlib.h>
+# include <string.h>
+# include <unistd.h>
+# include <selinux/selinux.h>
+
+# include "xmalloc.h"
+
+# define TEST_SECONTEXT
+# include "secontext.h"
+
+static char *
+secontext_format(char *context, const char *fmt)
+ ATTRIBUTE_FORMAT((printf, 2, 0)) ATTRIBUTE_MALLOC;
+
+static char *
+secontext_format(char *context, const char *fmt)
+{
+ int saved_errno = errno;
+ char *res = context ? xasprintf(fmt, context) : xstrdup("");
+ free(context);
+ errno = saved_errno;
+ return res;
+}
+
+# define FORMAT_SPACE_BEFORE(string) secontext_format(string, " [%s]")
+# define FORMAT_SPACE_AFTER(string) secontext_format(string, "[%s] ")
+
+static char *
+strip_trailing_newlines(char *context)
+{
+ /*
+ * On the CI at least, the context may have a trailing \n,
+ * let's remove it just in case.
+ */
+ size_t len = strlen(context);
+ for (; len > 0; --len) {
+ if (context[len - 1] != '\n')
+ break;
+ }
+ context[len] = '\0';
+ return context;
+}
+
+static char *
+raw_secontext_full_file(const char *filename)
+{
+ int saved_errno = errno;
+ char *full_secontext = NULL;
+ char *secontext;
+
+ if (getfilecon(filename, &secontext) >= 0) {
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
+ freecon(secontext);
+ }
+ errno = saved_errno;
+ return full_secontext;
+}
+
+static char *
+raw_secontext_short_file(const char *filename)
+{
+ int saved_errno = errno;
+
+ char *ctx = raw_secontext_full_file(filename);
+ if (ctx == NULL)
+ return ctx;
+
+ char *saveptr = NULL;
+ const char *token;
+ unsigned int i;
+
+ char *ctx_copy = xstrdup(ctx);
+ char *context = NULL;
+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), i++) {
+ if (i == 2) {
+ context = xstrdup(token);
+ break;
+ }
+ }
+ if (context == NULL)
+ context = xstrdup(ctx);
+ free(ctx_copy);
+ free(ctx);
+
+ errno = saved_errno;
+ return context;
+}
+
+static char *
+raw_secontext_full_pid(pid_t pid)
+{
+ int saved_errno = errno;
+ char *full_secontext = NULL;
+ char *secontext;
+
+ if (getpidcon(pid, &secontext) == 0) {
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
+ freecon(secontext);
+ }
+ errno = saved_errno;
+ return full_secontext;
+}
+
+static char *
+raw_secontext_short_pid(pid_t pid)
+{
+ int saved_errno = errno;
+
+ char *ctx = raw_secontext_full_pid(pid);
+ if (ctx == NULL)
+ return ctx;
+
+ char *saveptr = NULL;
+ const char *token;
+ int i;
+
+ char *ctx_copy = xstrdup(ctx);
+ char *context = NULL;
+ for (token = strtok_r(ctx_copy, ":", &saveptr), i = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), i++) {
+ if (i == 2) {
+ context = xstrdup(token);
+ break;
+ }
+ }
+ if (context == NULL)
+ context = xstrdup(ctx);
+ free(ctx_copy);
+ free(ctx);
+
+ errno = saved_errno;
+ return context;
+}
+
+char *
+secontext_full_file(const char *filename)
+{
+ return FORMAT_SPACE_BEFORE(raw_secontext_full_file(filename));
+}
+
+char *
+secontext_full_pid(pid_t pid)
+{
+ return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid));
+}
+
+char *
+secontext_short_file(const char *filename)
+{
+ return FORMAT_SPACE_BEFORE(raw_secontext_short_file(filename));
+}
+
+char *
+secontext_short_pid(pid_t pid)
+{
+ return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid));
+}
+
+void
+update_secontext_type(const char *file, const char *newtype)
+{
+ char *ctx = raw_secontext_full_file(file);
+ if (ctx == NULL)
+ return;
+
+ char *saveptr = NULL;
+ char *token;
+ int field;
+ char *split[4];
+
+ for (token = strtok_r(ctx, ":", &saveptr), field = 0;
+ token; token = strtok_r(NULL, ":", &saveptr), field++) {
+ assert(field < 4);
+ split[field] = token;
+ }
+ assert(field == 4);
+
+ char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1],
+ newtype, split[3]);
+
+ (void) setfilecon(file, newcontext);
+
+ free(newcontext);
+ free(ctx);
+}
+
+#endif /* HAVE_SELINUX_RUNTIME */
Index: strace-5.7/tests-mx32/secontext.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/secontext.h 2021-08-24 21:08:43.279245824 +0200
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+#include "xmalloc.h"
+#include <unistd.h>
+
+#if defined TEST_SECONTEXT && defined HAVE_SELINUX_RUNTIME
+
+void update_secontext_type(const char *file, const char *newtype);
+
+# ifdef PRINT_SECONTEXT_FULL
+
+char *secontext_full_file(const char *) ATTRIBUTE_MALLOC;
+char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC;
+
+# define SECONTEXT_FILE(filename) secontext_full_file(filename)
+# define SECONTEXT_PID(pid) secontext_full_pid(pid)
+
+# else
+
+char *secontext_short_file(const char *) ATTRIBUTE_MALLOC;
+char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC;
+
+# define SECONTEXT_FILE(filename) secontext_short_file(filename)
+# define SECONTEXT_PID(pid) secontext_short_pid(pid)
+
+# endif
+
+#else
+
+static inline void
+update_secontext_type(const char *file, const char *newtype)
+{
+}
+
+# define SECONTEXT_FILE(filename) xstrdup("")
+# define SECONTEXT_PID(pid) xstrdup("")
+
+#endif
+
+#define SECONTEXT_PID_MY() SECONTEXT_PID(getpid())
Index: strace-5.7/tests-mx32/strace-V.test
===================================================================
--- strace-5.7.orig/tests-mx32/strace-V.test 2021-08-24 21:08:35.398312527 +0200
+++ strace-5.7/tests-mx32/strace-V.test 2021-08-24 21:08:43.279245824 +0200
@@ -33,7 +33,9 @@
;;
esac
-features="${option_unwind}${option_demangle}${option_m32}${option_mx32}"
+option_secontext=$(get_config_option ENABLE_SECONTEXT " secontext")
+
+features="${option_unwind}${option_demangle}${option_m32}${option_mx32}${option_secontext}"
[ -n "$features" ] || features=" (none)"
cat > "$EXP" << __EOF__
Index: strace-5.7/util.c
===================================================================
--- strace-5.7.orig/util.c 2021-08-24 21:08:35.399312519 +0200
+++ strace-5.7/util.c 2021-08-24 21:08:43.279245824 +0200
@@ -26,6 +26,7 @@
#include "largefile_wrappers.h"
#include "number_set.h"
#include "print_utils.h"
+#include "secontext.h"
#include "static_assert.h"
#include "string_to_uint.h"
#include "xlat.h"
@@ -653,6 +654,13 @@
} else {
tprintf("%d", fd);
}
+#ifdef ENABLE_SECONTEXT
+ char *context;
+ if (!selinux_getfdcon(pid, fd, &context)) {
+ tprintf(" [%s]", context);
+ free(context);
+ }
+#endif
}
void
@@ -945,6 +953,14 @@
else {
path[n++] = !nul_seen;
print_quoted_cstring(path, n);
+
+#ifdef ENABLE_SECONTEXT
+ char *context;
+ if (nul_seen && !selinux_getfilecon(tcp, path, &context)) {
+ tprintf(" [%s]", context);
+ free(context);
+ }
+#endif
}
return nul_seen;
Index: strace-5.7/xgetdents.c
===================================================================
--- strace-5.7.orig/xgetdents.c 2021-08-24 21:08:35.399312519 +0200
+++ strace-5.7/xgetdents.c 2021-08-24 21:08:43.280245815 +0200
@@ -122,6 +122,9 @@
{
if (entering(tcp)) {
printfd(tcp, tcp->u_arg[0]);
+#ifdef ENABLE_SECONTEXT
+ tcp->last_dirfd = (int) tcp->u_arg[0];
+#endif
tprints(", ");
return 0;
}
Index: strace-5.7/Makefile.in
===================================================================
--- strace-5.7.orig/Makefile.in 2021-08-24 21:08:35.404312477 +0200
+++ strace-5.7/Makefile.in 2021-08-24 21:08:43.282245798 +0200
@@ -122,14 +122,21 @@
@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_11 = $(libiberty_CPPFLAGS)
@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_12 = $(libiberty_LDFLAGS)
@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_13 = $(libiberty_LIBS)
-@HAVE_M32_MPERS_TRUE@am__append_14 = libmpers-m32.a
-@HAVE_M32_MPERS_TRUE@am__append_15 = libmpers-m32.a
-@HAVE_M32_MPERS_TRUE@am__append_16 = $(mpers_m32_targets)
-@HAVE_M32_MPERS_TRUE@am__append_17 = $(mpers_m32_targets)
-@HAVE_MX32_MPERS_TRUE@am__append_18 = libmpers-mx32.a
-@HAVE_MX32_MPERS_TRUE@am__append_19 = libmpers-mx32.a
-@HAVE_MX32_MPERS_TRUE@am__append_20 = $(mpers_mx32_targets)
-@HAVE_MX32_MPERS_TRUE@am__append_21 = $(mpers_mx32_targets)
+@ENABLE_SECONTEXT_TRUE@am__append_14 = \
+@ENABLE_SECONTEXT_TRUE@ secontext.c \
+@ENABLE_SECONTEXT_TRUE@ secontext.h
+
+@ENABLE_SECONTEXT_TRUE@am__append_15 = $(libselinux_CPPFLAGS)
+@ENABLE_SECONTEXT_TRUE@am__append_16 = $(libselinux_LDFLAGS)
+@ENABLE_SECONTEXT_TRUE@am__append_17 = $(libselinux_LIBS)
+@HAVE_M32_MPERS_TRUE@am__append_18 = libmpers-m32.a
+@HAVE_M32_MPERS_TRUE@am__append_19 = libmpers-m32.a
+@HAVE_M32_MPERS_TRUE@am__append_20 = $(mpers_m32_targets)
+@HAVE_M32_MPERS_TRUE@am__append_21 = $(mpers_m32_targets)
+@HAVE_MX32_MPERS_TRUE@am__append_22 = libmpers-mx32.a
+@HAVE_MX32_MPERS_TRUE@am__append_23 = libmpers-mx32.a
+@HAVE_MX32_MPERS_TRUE@am__append_24 = $(mpers_mx32_targets)
+@HAVE_MX32_MPERS_TRUE@am__append_25 = $(mpers_mx32_targets)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
@@ -178,6 +185,7 @@
$(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
$(top_srcdir)/m4/st_libunwind.m4 \
$(top_srcdir)/m4/st_save_restore_var.m4 \
+ $(top_srcdir)/m4/st_selinux.m4 \
$(top_srcdir)/m4/st_stacktrace.m4 \
$(top_srcdir)/m4/st_warn_cflags.m4 \
$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -382,7 +390,7 @@
types/check-rtnl_link.c types/check-rtnl_mdb.c \
types/check-rtnl_neightbl.c types/check-rtnl_route.c \
types/check-v4l2.c unwind.c unwind.h unwind-libdw.c \
- unwind-libunwind.c
+ unwind-libunwind.c secontext.c secontext.h
am__objects_3 =
am__dirstamp = $(am__leading_dot)dirstamp
am__objects_4 = types/libstrace_a-check-cryptouser.$(OBJEXT) \
@@ -398,6 +406,8 @@
@ENABLE_STACKTRACE_TRUE@am__objects_6 = libstrace_a-unwind.$(OBJEXT)
@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__objects_7 = libstrace_a-unwind-libdw.$(OBJEXT)
@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__objects_8 = libstrace_a-unwind-libunwind.$(OBJEXT)
+@ENABLE_SECONTEXT_TRUE@am__objects_9 = \
+@ENABLE_SECONTEXT_TRUE@ libstrace_a-secontext.$(OBJEXT)
am_libstrace_a_OBJECTS = libstrace_a-access.$(OBJEXT) \
libstrace_a-affinity.$(OBJEXT) libstrace_a-aio.$(OBJEXT) \
libstrace_a-alpha.$(OBJEXT) \
@@ -567,7 +577,7 @@
libstrace_a-xattr.$(OBJEXT) libstrace_a-xgetdents.$(OBJEXT) \
libstrace_a-xlat.$(OBJEXT) libstrace_a-xmalloc.$(OBJEXT) \
$(am__objects_3) $(am__objects_5) $(am__objects_6) \
- $(am__objects_7) $(am__objects_8)
+ $(am__objects_7) $(am__objects_8) $(am__objects_9)
libstrace_a_OBJECTS = $(am_libstrace_a_OBJECTS)
am_strace_OBJECTS = strace-strace.$(OBJEXT)
strace_OBJECTS = $(am_strace_OBJECTS)
@@ -576,10 +586,12 @@
@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@ $(am__DEPENDENCIES_1)
@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
+@ENABLE_SECONTEXT_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
strace_DEPENDENCIES = libstrace.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) \
- $(am__DEPENDENCIES_1) $(am__append_14) $(am__append_18)
+ $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_1) $(am__append_18) \
+ $(am__append_22)
strace_LINK = $(CCLD) $(strace_CFLAGS) $(CFLAGS) $(strace_LDFLAGS) \
$(LDFLAGS) -o $@
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -1223,6 +1235,9 @@
libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
libiberty_LDFLAGS = @libiberty_LDFLAGS@
libiberty_LIBS = @libiberty_LIBS@
+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@
+libselinux_LDFLAGS = @libselinux_LDFLAGS@
+libselinux_LIBS = @libselinux_LIBS@
libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
libunwind_LDFLAGS = @libunwind_LDFLAGS@
libunwind_LIBS = @libunwind_LIBS@
@@ -1782,14 +1797,15 @@
xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h \
xlat/xfs_quota_flags.h
strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_3) $(am__append_8) \
- $(am__append_11) $(CODE_COVERAGE_CPPFLAGS)
+ $(am__append_11) $(am__append_15) $(CODE_COVERAGE_CPPFLAGS)
strace_CFLAGS = $(AM_CFLAGS) $(am__append_4) $(CODE_COVERAGE_CFLAGS)
-strace_LDFLAGS = $(am__append_5) $(am__append_9) $(am__append_12)
+strace_LDFLAGS = $(am__append_5) $(am__append_9) $(am__append_12) \
+ $(am__append_16)
strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS) $(am__append_6) \
- $(am__append_10) $(am__append_13) $(CODE_COVERAGE_LIBS) \
- $(am__append_14) $(am__append_18)
+ $(am__append_10) $(am__append_13) $(am__append_17) \
+ $(CODE_COVERAGE_LIBS) $(am__append_18) $(am__append_22)
strace_SOURCES = strace.c
-noinst_LIBRARIES = libstrace.a $(am__append_15) $(am__append_19)
+noinst_LIBRARIES = libstrace.a $(am__append_19) $(am__append_23)
libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
libstrace_a_CFLAGS = $(strace_CFLAGS)
libstrace_a_SOURCES = access.c affinity.c aio.c alpha.c arch_defs.h \
@@ -1864,7 +1880,7 @@
wait.h watchdog_ioctl.c xattr.c xfs_quota_stat.h xgetdents.c \
xgetdents.h xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \
$(TYPES_HEADER_FILES) $(strace_SOURCES_check) $(am__append_1) \
- $(am__append_2) $(am__append_7)
+ $(am__append_2) $(am__append_7) $(am__append_14)
strace_SOURCES_check = bpf_attr_check.c $(TYPES_CHECK_FILES)
CODE_COVERAGE_BRANCH_COVERAGE = 1
CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
@@ -2459,12 +2475,12 @@
ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h)))
BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) bpf_attr_check.c \
native_printer_decls.h native_printer_defs.h printers.h sen.h \
- sys_func.h .version scno.h $(am__append_16) $(am__append_20)
+ sys_func.h .version scno.h $(am__append_20) $(am__append_24)
CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \
ioctl_iocdef.h ioctl_iocdef.i bpf_attr_check.c \
native_printer_decls.h native_printer_defs.h printers.h sen.h \
- sys_func.h syscallent.i scno.h $(am__append_17) \
- $(am__append_21)
+ sys_func.h syscallent.i scno.h $(am__append_21) \
+ $(am__append_25)
DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h linux/linux/signal.h
SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
@@ -2963,6 +2979,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sched.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-scsi.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-seccomp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-secontext.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sendfile.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sg_io_v3.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-sg_io_v4.Po@am__quote@ # am--include-marker
@@ -7814,6 +7831,20 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-unwind-libunwind.obj `if test -f 'unwind-libunwind.c'; then $(CYGPATH_W) 'unwind-libunwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libunwind.c'; fi`
+libstrace_a-secontext.o: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-secontext.o -MD -MP -MF $(DEPDIR)/libstrace_a-secontext.Tpo -c -o libstrace_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-secontext.Tpo $(DEPDIR)/libstrace_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libstrace_a-secontext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+
+libstrace_a-secontext.obj: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-secontext.obj -MD -MP -MF $(DEPDIR)/libstrace_a-secontext.Tpo -c -o libstrace_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-secontext.Tpo $(DEPDIR)/libstrace_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libstrace_a-secontext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+
strace-strace.o: strace.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.o -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po
Index: strace-5.7/tests/Makefile.in
===================================================================
--- strace-5.7.orig/tests/Makefile.in 2021-08-24 21:08:35.436312206 +0200
+++ strace-5.7/tests/Makefile.in 2021-08-24 21:08:43.286245764 +0200
@@ -22,6 +22,8 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
+# Generated by ./tests/gen_secontext.sh from ./tests/gen_tests.in; do not edit.
+
# scno.h make rules for strace.
#
# Copyright (c) 2017-2019 Dmitry V. Levin <ldv@altlinux.org>
@@ -102,8 +104,8 @@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
- attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) _newselect-P$(EXEEXT) \
+ answer$(EXEEXT) attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \
bpf-obj_get_info_by_fd$(EXEEXT) \
@@ -221,7 +223,7 @@
xetpriority--pidns-translation$(EXEEXT) \
xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT)
@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
-TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_3)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
@@ -270,6 +272,7 @@
$(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
$(top_srcdir)/m4/st_libunwind.m4 \
$(top_srcdir)/m4/st_save_restore_var.m4 \
+ $(top_srcdir)/m4/st_selinux.m4 \
$(top_srcdir)/m4/st_stacktrace.m4 \
$(top_srcdir)/m4/st_warn_cflags.m4 \
$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -298,7 +301,8 @@
epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
- execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+ execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \
+ faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) fadvise64$(EXEEXT) \
fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
@@ -543,6 +547,26 @@
xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
+am__EXEEXT_2 = access--secontext$(EXEEXT) \
+ access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \
+ chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \
+ execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \
+ execveat--secontext_full$(EXEEXT) \
+ faccessat--secontext$(EXEEXT) \
+ faccessat--secontext_full$(EXEEXT) \
+ faccessat-y--secontext$(EXEEXT) \
+ faccessat-y--secontext_full$(EXEEXT) \
+ fanotify_mark--secontext$(EXEEXT) \
+ fanotify_mark--secontext_full$(EXEEXT) \
+ fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \
+ fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \
+ fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \
+ fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \
+ file_handle--secontext$(EXEEXT) \
+ file_handle--secontext_full$(EXEEXT) \
+ linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \
+ open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \
+ openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT)
ARFLAGS = cru
AM_V_AR = $(am__v_AR_@AM_V@)
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
@@ -571,6 +595,7 @@
libtests_a-printxval-Xabbrev.$(OBJEXT) \
libtests_a-printxval-Xraw.$(OBJEXT) \
libtests_a-printxval-Xverbose.$(OBJEXT) \
+ libtests_a-secontext.$(OBJEXT) \
libtests_a-signal2name.$(OBJEXT) \
libtests_a-skip_unavailable.$(OBJEXT) \
libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \
@@ -600,6 +625,14 @@
access_OBJECTS = access.$(OBJEXT)
access_LDADD = $(LDADD)
access_DEPENDENCIES = libtests.a
+access__secontext_SOURCES = access--secontext.c
+access__secontext_OBJECTS = access--secontext.$(OBJEXT)
+am__DEPENDENCIES_1 =
+@HAVE_SELINUX_RUNTIME_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+access__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+access__secontext_full_SOURCES = access--secontext_full.c
+access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT)
+access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
acct_SOURCES = acct.c
acct_OBJECTS = acct.$(OBJEXT)
acct_LDADD = $(LDADD)
@@ -718,6 +751,12 @@
chmod_OBJECTS = chmod.$(OBJEXT)
chmod_LDADD = $(LDADD)
chmod_DEPENDENCIES = libtests.a
+chmod__secontext_SOURCES = chmod--secontext.c
+chmod__secontext_OBJECTS = chmod--secontext.$(OBJEXT)
+chmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+chmod__secontext_full_SOURCES = chmod--secontext_full.c
+chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT)
+chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
chown_SOURCES = chown.c
chown_OBJECTS = chown.$(OBJEXT)
chown_LDADD = $(LDADD)
@@ -828,7 +867,6 @@
creat_DEPENDENCIES = libtests.a
delay_SOURCES = delay.c
delay_OBJECTS = delay.$(OBJEXT)
-am__DEPENDENCIES_1 =
delay_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
delete_module_SOURCES = delete_module.c
delete_module_OBJECTS = delete_module.$(OBJEXT)
@@ -930,6 +968,12 @@
execve_OBJECTS = execve.$(OBJEXT)
execve_LDADD = $(LDADD)
execve_DEPENDENCIES = libtests.a
+execve__secontext_SOURCES = execve--secontext.c
+execve__secontext_OBJECTS = execve--secontext.$(OBJEXT)
+execve__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+execve__secontext_full_SOURCES = execve--secontext_full.c
+execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT)
+execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
execve_v_SOURCES = execve-v.c
execve_v_OBJECTS = execve-v.$(OBJEXT)
execve_v_LDADD = $(LDADD)
@@ -938,6 +982,12 @@
execveat_OBJECTS = execveat.$(OBJEXT)
execveat_LDADD = $(LDADD)
execveat_DEPENDENCIES = libtests.a
+execveat__secontext_SOURCES = execveat--secontext.c
+execveat__secontext_OBJECTS = execveat--secontext.$(OBJEXT)
+execveat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+execveat__secontext_full_SOURCES = execveat--secontext_full.c
+execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT)
+execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
execveat_v_SOURCES = execveat-v.c
execveat_v_OBJECTS = execveat-v.$(OBJEXT)
execveat_v_LDADD = $(LDADD)
@@ -946,6 +996,34 @@
faccessat_OBJECTS = faccessat.$(OBJEXT)
faccessat_LDADD = $(LDADD)
faccessat_DEPENDENCIES = libtests.a
+faccessat__secontext_SOURCES = faccessat--secontext.c
+faccessat__secontext_OBJECTS = faccessat--secontext.$(OBJEXT)
+faccessat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+faccessat__secontext_full_SOURCES = faccessat--secontext_full.c
+faccessat__secontext_full_OBJECTS = \
+ faccessat--secontext_full.$(OBJEXT)
+faccessat__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
+faccessat_P_SOURCES = faccessat-P.c
+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT)
+faccessat_P_LDADD = $(LDADD)
+faccessat_P_DEPENDENCIES = libtests.a
+faccessat_y_SOURCES = faccessat-y.c
+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT)
+faccessat_y_LDADD = $(LDADD)
+faccessat_y_DEPENDENCIES = libtests.a
+faccessat_y__secontext_SOURCES = faccessat-y--secontext.c
+faccessat_y__secontext_OBJECTS = faccessat-y--secontext.$(OBJEXT)
+faccessat_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+faccessat_y__secontext_full_SOURCES = faccessat-y--secontext_full.c
+faccessat_y__secontext_full_OBJECTS = \
+ faccessat-y--secontext_full.$(OBJEXT)
+faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
+faccessat_yy_SOURCES = faccessat-yy.c
+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT)
+faccessat_yy_LDADD = $(LDADD)
+faccessat_yy_DEPENDENCIES = libtests.a
fadvise64_SOURCES = fadvise64.c
fadvise64_OBJECTS = fadvise64.$(OBJEXT)
fadvise64_LDADD = $(LDADD)
@@ -966,6 +1044,15 @@
fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT)
fanotify_mark_LDADD = $(LDADD)
fanotify_mark_DEPENDENCIES = libtests.a
+fanotify_mark__secontext_SOURCES = fanotify_mark--secontext.c
+fanotify_mark__secontext_OBJECTS = fanotify_mark--secontext.$(OBJEXT)
+fanotify_mark__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fanotify_mark__secontext_full_SOURCES = \
+ fanotify_mark--secontext_full.c
+fanotify_mark__secontext_full_OBJECTS = \
+ fanotify_mark--secontext_full.$(OBJEXT)
+fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c
fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT)
fanotify_mark_Xabbrev_LDADD = $(LDADD)
@@ -986,14 +1073,32 @@
fchmod_OBJECTS = fchmod.$(OBJEXT)
fchmod_LDADD = $(LDADD)
fchmod_DEPENDENCIES = libtests.a
+fchmod__secontext_SOURCES = fchmod--secontext.c
+fchmod__secontext_OBJECTS = fchmod--secontext.$(OBJEXT)
+fchmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmod__secontext_full_SOURCES = fchmod--secontext_full.c
+fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT)
+fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchmod_y_SOURCES = fchmod-y.c
fchmod_y_OBJECTS = fchmod-y.$(OBJEXT)
fchmod_y_LDADD = $(LDADD)
fchmod_y_DEPENDENCIES = libtests.a
+fchmod_y__secontext_SOURCES = fchmod-y--secontext.c
+fchmod_y__secontext_OBJECTS = fchmod-y--secontext.$(OBJEXT)
+fchmod_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c
+fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT)
+fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchmodat_SOURCES = fchmodat.c
fchmodat_OBJECTS = fchmodat.$(OBJEXT)
fchmodat_LDADD = $(LDADD)
fchmodat_DEPENDENCIES = libtests.a
+fchmodat__secontext_SOURCES = fchmodat--secontext.c
+fchmodat__secontext_OBJECTS = fchmodat--secontext.$(OBJEXT)
+fchmodat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c
+fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT)
+fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchown_SOURCES = fchown.c
fchown_OBJECTS = fchown.$(OBJEXT)
fchown_LDADD = $(LDADD)
@@ -1006,6 +1111,12 @@
fchownat_OBJECTS = fchownat.$(OBJEXT)
fchownat_LDADD = $(LDADD)
fchownat_DEPENDENCIES = libtests.a
+fchownat__secontext_SOURCES = fchownat--secontext.c
+fchownat__secontext_OBJECTS = fchownat--secontext.$(OBJEXT)
+fchownat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchownat__secontext_full_SOURCES = fchownat--secontext_full.c
+fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT)
+fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fcntl_SOURCES = fcntl.c
fcntl_OBJECTS = fcntl.$(OBJEXT)
fcntl_LDADD = $(LDADD)
@@ -1035,6 +1146,14 @@
file_handle_OBJECTS = file_handle.$(OBJEXT)
file_handle_LDADD = $(LDADD)
file_handle_DEPENDENCIES = libtests.a
+file_handle__secontext_SOURCES = file_handle--secontext.c
+file_handle__secontext_OBJECTS = file_handle--secontext.$(OBJEXT)
+file_handle__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+file_handle__secontext_full_SOURCES = file_handle--secontext_full.c
+file_handle__secontext_full_OBJECTS = \
+ file_handle--secontext_full.$(OBJEXT)
+file_handle__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
file_ioctl_SOURCES = file_ioctl.c
file_ioctl_OBJECTS = file_ioctl.$(OBJEXT)
file_ioctl_LDADD = $(LDADD)
@@ -1886,6 +2005,12 @@
linkat_OBJECTS = linkat.$(OBJEXT)
linkat_LDADD = $(LDADD)
linkat_DEPENDENCIES = libtests.a
+linkat__secontext_SOURCES = linkat--secontext.c
+linkat__secontext_OBJECTS = linkat--secontext.$(OBJEXT)
+linkat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+linkat__secontext_full_SOURCES = linkat--secontext_full.c
+linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT)
+linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
list_sigaction_signum_SOURCES = list_sigaction_signum.c
list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT)
list_sigaction_signum_LDADD = $(LDADD)
@@ -2530,6 +2655,12 @@
open_OBJECTS = open.$(OBJEXT)
open_LDADD = $(LDADD)
open_DEPENDENCIES = libtests.a
+open__secontext_SOURCES = open--secontext.c
+open__secontext_OBJECTS = open--secontext.$(OBJEXT)
+open__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+open__secontext_full_SOURCES = open--secontext_full.c
+open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT)
+open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
open_tree_SOURCES = open_tree.c
open_tree_OBJECTS = open_tree.$(OBJEXT)
open_tree_LDADD = $(LDADD)
@@ -2542,6 +2673,12 @@
openat_OBJECTS = openat.$(OBJEXT)
openat_LDADD = $(LDADD)
openat_DEPENDENCIES = libtests.a
+openat__secontext_SOURCES = openat--secontext.c
+openat__secontext_OBJECTS = openat--secontext.$(OBJEXT)
+openat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+openat__secontext_full_SOURCES = openat--secontext_full.c
+openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT)
+openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
openat2_SOURCES = openat2.c
openat2_OBJECTS = openat2.$(OBJEXT)
openat2_LDADD = $(LDADD)
@@ -4487,7 +4624,8 @@
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
- accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+ accept4.c access.c access--secontext.c \
+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \
aio_pgetevents.c alarm.c answer.c attach-f-p.c \
attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \
block_reset_raise_run.c block_reset_run.c bpf.c \
@@ -4495,7 +4633,8 @@
bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
- check_sigign.c chmod.c chown.c chown32.c chroot.c \
+ check_sigign.c chmod.c chmod--secontext.c \
+ chmod--secontext_full.c chown.c chown32.c chroot.c \
clock_adjtime.c clock_nanosleep.c clock_xettime.c \
clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
@@ -4509,25 +4648,35 @@
dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \
epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \
- execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
- fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
- fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
- fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
- fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
- fcntl--pidns-translation.c fcntl64.c \
- fcntl64--pidns-translation.c fdatasync.c fflush.c \
- file_handle.c file_ioctl.c filter-unavailable.c \
- filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
- flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+ execve--secontext.c execve--secontext_full.c execve-v.c \
+ execveat.c execveat--secontext.c execveat--secontext_full.c \
+ execveat-v.c faccessat.c faccessat--secontext.c \
+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \
+ faccessat-y--secontext.c faccessat-y--secontext_full.c \
+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \
+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \
+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \
+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \
+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \
+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \
+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \
+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \
+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \
+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+ file_handle.c file_handle--secontext.c \
+ file_handle--secontext_full.c file_ioctl.c \
+ filter-unavailable.c filter_seccomp-flag.c \
+ filter_seccomp-perf.c finit_module.c flock.c \
+ fork--pidns-translation.c fork-f.c fsconfig.c fsconfig-P.c \
+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \
+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \
+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \
+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \
+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \
+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \
+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \
+ getpgrp.c getpgrp--pidns-translation.c getpid.c \
getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
getresgid32.c getresuid.c getresuid32.c getrlimit.c \
getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
@@ -4578,7 +4727,8 @@
kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
keyctl-Xraw.c keyctl-Xverbose.c kill.c \
kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+ lchown32.c link.c linkat.c linkat--secontext.c \
+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \
localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
lstat64.c madvise.c maybe_switch_current_tcp.c \
maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
@@ -4629,23 +4779,25 @@
old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
- orphaned_process_group.c osf_utimes.c pause.c pc.c \
- perf_event_open.c perf_event_open_nonverbose.c \
- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ oldstat.c open.c open--secontext.c open--secontext_full.c \
+ open_tree.c open_tree-P.c openat.c openat--secontext.c \
+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \
+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \
+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \
+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \
+ osf_utimes.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c personality-Xabbrev.c personality-Xraw.c \
+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \
+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \
+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \
+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \
+ pidfd_open-yy.c pidfd_send_signal.c \
+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \
+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \
prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \
preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \
@@ -4735,7 +4887,8 @@
xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
zeroargc.c
DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
- accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+ accept.c accept4.c access.c access--secontext.c \
+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \
aio_pgetevents.c alarm.c answer.c attach-f-p.c \
attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \
block_reset_raise_run.c block_reset_run.c bpf.c \
@@ -4743,7 +4896,8 @@
bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
- check_sigign.c chmod.c chown.c chown32.c chroot.c \
+ check_sigign.c chmod.c chmod--secontext.c \
+ chmod--secontext_full.c chown.c chown32.c chroot.c \
clock_adjtime.c clock_nanosleep.c clock_xettime.c \
clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
@@ -4757,25 +4911,35 @@
dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \
epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \
- execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
- fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
- fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
- fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
- fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
- fcntl--pidns-translation.c fcntl64.c \
- fcntl64--pidns-translation.c fdatasync.c fflush.c \
- file_handle.c file_ioctl.c filter-unavailable.c \
- filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
- flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+ execve--secontext.c execve--secontext_full.c execve-v.c \
+ execveat.c execveat--secontext.c execveat--secontext_full.c \
+ execveat-v.c faccessat.c faccessat--secontext.c \
+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \
+ faccessat-y--secontext.c faccessat-y--secontext_full.c \
+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \
+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \
+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \
+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \
+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \
+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \
+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \
+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \
+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \
+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+ file_handle.c file_handle--secontext.c \
+ file_handle--secontext_full.c file_ioctl.c \
+ filter-unavailable.c filter_seccomp-flag.c \
+ filter_seccomp-perf.c finit_module.c flock.c \
+ fork--pidns-translation.c fork-f.c fsconfig.c fsconfig-P.c \
+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \
+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \
+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \
+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \
+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \
+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \
+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \
+ getpgrp.c getpgrp--pidns-translation.c getpid.c \
getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
getresgid32.c getresuid.c getresuid32.c getrlimit.c \
getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
@@ -4826,7 +4990,8 @@
kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
keyctl-Xraw.c keyctl-Xverbose.c kill.c \
kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+ lchown32.c link.c linkat.c linkat--secontext.c \
+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \
localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
lstat64.c madvise.c maybe_switch_current_tcp.c \
maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
@@ -4877,23 +5042,25 @@
old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
- orphaned_process_group.c osf_utimes.c pause.c pc.c \
- perf_event_open.c perf_event_open_nonverbose.c \
- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ oldstat.c open.c open--secontext.c open--secontext_full.c \
+ open_tree.c open_tree-P.c openat.c openat--secontext.c \
+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \
+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \
+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \
+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \
+ osf_utimes.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c personality-Xabbrev.c personality-Xraw.c \
+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \
+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \
+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \
+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \
+ pidfd_open-yy.c pidfd_send_signal.c \
+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \
+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \
prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \
preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \
@@ -5194,7 +5361,7 @@
bases=`echo $$bases`
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
-@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_3 = strace-k.test strace-k-p.test \
@ENABLE_STACKTRACE_TRUE@ $(am__append_1)
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
@@ -5216,7 +5383,8 @@
esac
am__DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
$(srcdir)/gen_tests.am $(srcdir)/pure_executables.am \
- $(top_srcdir)/depcomp $(top_srcdir)/test-driver COPYING
+ $(srcdir)/secontext.am $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver COPYING
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -5357,6 +5525,9 @@
libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
libiberty_LDFLAGS = @libiberty_LDFLAGS@
libiberty_LIBS = @libiberty_LIBS@
+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@
+libselinux_LDFLAGS = @libselinux_LDFLAGS@
+libselinux_LIBS = @libselinux_LIBS@
libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
libunwind_LDFLAGS = @libunwind_LDFLAGS@
libunwind_LIBS = @libunwind_LIBS@
@@ -5400,6 +5571,8 @@
-DTESTS_SIZEOF_LONG=$(SIZEOF_LONG)
AM_LDFLAGS = $(ARCH_MFLAGS)
+@HAVE_SELINUX_RUNTIME_FALSE@libselinux_LDADD =
+@HAVE_SELINUX_RUNTIME_TRUE@libselinux_LDADD = $(libselinux_LIBS)
libtests_a_SOURCES = \
create_nl_socket.c \
create_tmpfile.c \
@@ -5426,6 +5599,8 @@
printxval-Xabbrev.c \
printxval-Xraw.c \
printxval-Xverbose.c \
+ secontext.c \
+ secontext.h \
signal2name.c \
skip_unavailable.c \
sprintrc.c \
@@ -5505,6 +5680,9 @@
execve \
execveat \
faccessat \
+ faccessat-P \
+ faccessat-y \
+ faccessat-yy \
fadvise64 \
fadvise64_64 \
fallocate \
@@ -6077,6 +6255,69 @@
xettimeofday \
#
+secontext_EXECUTABLES = \
+ access--secontext \
+ access--secontext_full \
+ chmod--secontext \
+ chmod--secontext_full \
+ execve--secontext \
+ execve--secontext_full \
+ execveat--secontext \
+ execveat--secontext_full \
+ faccessat--secontext \
+ faccessat--secontext_full \
+ faccessat-y--secontext \
+ faccessat-y--secontext_full \
+ fanotify_mark--secontext \
+ fanotify_mark--secontext_full \
+ fchmod--secontext \
+ fchmod--secontext_full \
+ fchmod-y--secontext \
+ fchmod-y--secontext_full \
+ fchmodat--secontext \
+ fchmodat--secontext_full \
+ fchownat--secontext \
+ fchownat--secontext_full \
+ file_handle--secontext \
+ file_handle--secontext_full \
+ linkat--secontext \
+ linkat--secontext_full \
+ open--secontext \
+ open--secontext_full \
+ openat--secontext \
+ openat--secontext_full \
+ #
+
+access__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+open__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
attach_f_p_LDADD = -lpthread $(LDADD)
count_f_LDADD = -lpthread $(LDADD)
delay_LDADD = $(clock_LIBS) $(LDADD)
@@ -6129,14 +6370,15 @@
# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
- accept4.gen.test access.gen.test acct.gen.test \
- add_key.gen.test adjtimex.gen.test aio.gen.test \
- aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \
- bpf-obj_get_info_by_fd.gen.test \
+ accept4.gen.test access.gen.test access--secontext.gen.test \
+ access--secontext_full.gen.test acct.gen.test add_key.gen.test \
+ adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \
+ alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \
bpf-obj_get_info_by_fd-prog.gen.test \
bpf-obj_get_info_by_fd-prog-v.gen.test \
bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \
- btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \
+ btrfs.gen.test chmod.gen.test chmod--secontext.gen.test \
+ chmod--secontext_full.gen.test chown.gen.test chown32.gen.test \
chroot.gen.test clock.gen.test clock_adjtime.gen.test \
clock_nanosleep.gen.test clock_xettime.gen.test \
clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \
@@ -6155,21 +6397,36 @@
dup3-P.gen.test dup3-y.gen.test dup3-yy.gen.test \
epoll_create.gen.test epoll_create1.gen.test \
epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test \
- erestartsys.gen.test execveat.gen.test execveat-v.gen.test \
- faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test \
+ erestartsys.gen.test execve--secontext.gen.test \
+ execve--secontext_full.gen.test execveat.gen.test \
+ execveat--secontext.gen.test execveat--secontext_full.gen.test \
+ execveat-v.gen.test faccessat--secontext.gen.test \
+ faccessat--secontext_full.gen.test faccessat-P.gen.test \
+ faccessat-y.gen.test faccessat-y--secontext.gen.test \
+ faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \
+ fadvise64_64.gen.test fallocate.gen.test \
fanotify_init.gen.test fanotify_mark.gen.test \
+ fanotify_mark--secontext.gen.test \
+ fanotify_mark--secontext_full.gen.test \
fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
fanotify_mark-Xverbose.gen.test fchdir.gen.test \
- fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \
- fchown.gen.test fchown32.gen.test fchownat.gen.test \
+ fchmod.gen.test fchmod--secontext.gen.test \
+ fchmod--secontext_full.gen.test fchmod-y.gen.test \
+ fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \
+ fchmodat.gen.test fchmodat--secontext.gen.test \
+ fchmodat--secontext_full.gen.test fchown.gen.test \
+ fchown32.gen.test fchownat.gen.test \
+ fchownat--secontext.gen.test fchownat--secontext_full.gen.test \
fcntl.gen.test fcntl--pidns-translation.gen.test \
fcntl64.gen.test fcntl64--pidns-translation.gen.test \
fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
- filter_seccomp.gen.test filter_seccomp-flag.gen.test \
- finit_module.gen.test flock.gen.test fork-f.gen.test \
- fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
- fsopen.gen.test fspick.gen.test fspick-P.gen.test \
- fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
+ file_handle--secontext.gen.test \
+ file_handle--secontext_full.gen.test filter_seccomp.gen.test \
+ filter_seccomp-flag.gen.test finit_module.gen.test \
+ flock.gen.test fork-f.gen.test fsconfig.gen.test \
+ fsconfig-P.gen.test fsmount.gen.test fsopen.gen.test \
+ fspick.gen.test fspick-P.gen.test fstat.gen.test \
+ fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
fstat-Xverbose.gen.test fstat64.gen.test \
fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \
fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \
@@ -6259,8 +6516,9 @@
keyctl-Xverbose.gen.test kill.gen.test \
kill--pidns-translation.gen.test ksysent.gen.test \
lchown.gen.test lchown32.gen.test link.gen.test \
- linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
- lstat64.gen.test madvise.gen.test \
+ linkat.gen.test linkat--secontext.gen.test \
+ linkat--secontext_full.gen.test lookup_dcookie.gen.test \
+ lstat.gen.test lstat64.gen.test madvise.gen.test \
maybe_switch_current_tcp.gen.test \
maybe_switch_current_tcp--quiet-thread-execve.gen.test \
mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \
@@ -6328,14 +6586,17 @@
old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \
oldselect.gen.test oldselect-P.gen.test \
oldselect-efault.gen.test oldselect-efault-P.gen.test \
- oldstat.gen.test open.gen.test open_tree.gen.test \
- open_tree-P.gen.test openat.gen.test openat2.gen.test \
- openat2-Xabbrev.gen.test openat2-Xraw.gen.test \
- openat2-Xverbose.gen.test openat2-v.gen.test \
- openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \
- openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \
- openat2-y.gen.test orphaned_process_group.gen.test \
- osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \
+ oldstat.gen.test open.gen.test open--secontext.gen.test \
+ open--secontext_full.gen.test open_tree.gen.test \
+ open_tree-P.gen.test openat.gen.test \
+ openat--secontext.gen.test openat--secontext_full.gen.test \
+ openat2.gen.test openat2-Xabbrev.gen.test \
+ openat2-Xraw.gen.test openat2-Xverbose.gen.test \
+ openat2-v.gen.test openat2-v-y.gen.test \
+ openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \
+ openat2-v-y-Xverbose.gen.test openat2-y.gen.test \
+ orphaned_process_group.gen.test osf_utimes.gen.test \
+ pause.gen.test perf_event_open.gen.test \
perf_event_open_nonverbose.gen.test \
perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \
personality-Xraw.gen.test personality-Xverbose.gen.test \
@@ -6806,7 +7067,7 @@
.SUFFIXES:
.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -6826,7 +7087,7 @@
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
-$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty):
+$(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -6868,6 +7129,14 @@
@rm -f access$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS)
+access--secontext$(EXEEXT): $(access__secontext_OBJECTS) $(access__secontext_DEPENDENCIES) $(EXTRA_access__secontext_DEPENDENCIES)
+ @rm -f access--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access__secontext_OBJECTS) $(access__secontext_LDADD) $(LIBS)
+
+access--secontext_full$(EXEEXT): $(access__secontext_full_OBJECTS) $(access__secontext_full_DEPENDENCIES) $(EXTRA_access__secontext_full_DEPENDENCIES)
+ @rm -f access--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS)
+
acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES)
@rm -f acct$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS)
@@ -6984,6 +7253,14 @@
@rm -f chmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
+chmod--secontext$(EXEEXT): $(chmod__secontext_OBJECTS) $(chmod__secontext_DEPENDENCIES) $(EXTRA_chmod__secontext_DEPENDENCIES)
+ @rm -f chmod--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_OBJECTS) $(chmod__secontext_LDADD) $(LIBS)
+
+chmod--secontext_full$(EXEEXT): $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_DEPENDENCIES) $(EXTRA_chmod__secontext_full_DEPENDENCIES)
+ @rm -f chmod--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS)
+
chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES)
@rm -f chown$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS)
@@ -7196,6 +7473,14 @@
@rm -f execve$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS)
+execve--secontext$(EXEEXT): $(execve__secontext_OBJECTS) $(execve__secontext_DEPENDENCIES) $(EXTRA_execve__secontext_DEPENDENCIES)
+ @rm -f execve--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve__secontext_OBJECTS) $(execve__secontext_LDADD) $(LIBS)
+
+execve--secontext_full$(EXEEXT): $(execve__secontext_full_OBJECTS) $(execve__secontext_full_DEPENDENCIES) $(EXTRA_execve__secontext_full_DEPENDENCIES)
+ @rm -f execve--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS)
+
execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES)
@rm -f execve-v$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS)
@@ -7204,6 +7489,14 @@
@rm -f execveat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS)
+execveat--secontext$(EXEEXT): $(execveat__secontext_OBJECTS) $(execveat__secontext_DEPENDENCIES) $(EXTRA_execveat__secontext_DEPENDENCIES)
+ @rm -f execveat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_OBJECTS) $(execveat__secontext_LDADD) $(LIBS)
+
+execveat--secontext_full$(EXEEXT): $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_DEPENDENCIES) $(EXTRA_execveat__secontext_full_DEPENDENCIES)
+ @rm -f execveat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS)
+
execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES)
@rm -f execveat-v$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS)
@@ -7212,6 +7505,34 @@
@rm -f faccessat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
+faccessat--secontext$(EXEEXT): $(faccessat__secontext_OBJECTS) $(faccessat__secontext_DEPENDENCIES) $(EXTRA_faccessat__secontext_DEPENDENCIES)
+ @rm -f faccessat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_OBJECTS) $(faccessat__secontext_LDADD) $(LIBS)
+
+faccessat--secontext_full$(EXEEXT): $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_DEPENDENCIES)
+ @rm -f faccessat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS)
+
+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES)
+ @rm -f faccessat-P$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS)
+
+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES)
+ @rm -f faccessat-y$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS)
+
+faccessat-y--secontext$(EXEEXT): $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_DEPENDENCIES)
+ @rm -f faccessat-y--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_LDADD) $(LIBS)
+
+faccessat-y--secontext_full$(EXEEXT): $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_DEPENDENCIES)
+ @rm -f faccessat-y--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS)
+
+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES)
+ @rm -f faccessat-yy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS)
+
fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES)
@rm -f fadvise64$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
@@ -7232,6 +7553,14 @@
@rm -f fanotify_mark$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS)
+fanotify_mark--secontext$(EXEEXT): $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_DEPENDENCIES)
+ @rm -f fanotify_mark--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_LDADD) $(LIBS)
+
+fanotify_mark--secontext_full$(EXEEXT): $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_DEPENDENCIES)
+ @rm -f fanotify_mark--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS)
+
fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES)
@rm -f fanotify_mark-Xabbrev$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS)
@@ -7252,14 +7581,38 @@
@rm -f fchmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
+fchmod--secontext$(EXEEXT): $(fchmod__secontext_OBJECTS) $(fchmod__secontext_DEPENDENCIES) $(EXTRA_fchmod__secontext_DEPENDENCIES)
+ @rm -f fchmod--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_OBJECTS) $(fchmod__secontext_LDADD) $(LIBS)
+
+fchmod--secontext_full$(EXEEXT): $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_DEPENDENCIES)
+ @rm -f fchmod--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_LDADD) $(LIBS)
+
fchmod-y$(EXEEXT): $(fchmod_y_OBJECTS) $(fchmod_y_DEPENDENCIES) $(EXTRA_fchmod_y_DEPENDENCIES)
@rm -f fchmod-y$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmod_y_OBJECTS) $(fchmod_y_LDADD) $(LIBS)
+fchmod-y--secontext$(EXEEXT): $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_DEPENDENCIES)
+ @rm -f fchmod-y--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_LDADD) $(LIBS)
+
+fchmod-y--secontext_full$(EXEEXT): $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_DEPENDENCIES)
+ @rm -f fchmod-y--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS)
+
fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES)
@rm -f fchmodat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
+fchmodat--secontext$(EXEEXT): $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_DEPENDENCIES) $(EXTRA_fchmodat__secontext_DEPENDENCIES)
+ @rm -f fchmodat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_LDADD) $(LIBS)
+
+fchmodat--secontext_full$(EXEEXT): $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_DEPENDENCIES)
+ @rm -f fchmodat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS)
+
fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES)
@rm -f fchown$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS)
@@ -7272,6 +7625,14 @@
@rm -f fchownat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS)
+fchownat--secontext$(EXEEXT): $(fchownat__secontext_OBJECTS) $(fchownat__secontext_DEPENDENCIES) $(EXTRA_fchownat__secontext_DEPENDENCIES)
+ @rm -f fchownat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_OBJECTS) $(fchownat__secontext_LDADD) $(LIBS)
+
+fchownat--secontext_full$(EXEEXT): $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_DEPENDENCIES)
+ @rm -f fchownat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS)
+
fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES)
@rm -f fcntl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
@@ -7300,6 +7661,14 @@
@rm -f file_handle$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS)
+file_handle--secontext$(EXEEXT): $(file_handle__secontext_OBJECTS) $(file_handle__secontext_DEPENDENCIES) $(EXTRA_file_handle__secontext_DEPENDENCIES)
+ @rm -f file_handle--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_OBJECTS) $(file_handle__secontext_LDADD) $(LIBS)
+
+file_handle--secontext_full$(EXEEXT): $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_DEPENDENCIES)
+ @rm -f file_handle--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS)
+
file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES)
@rm -f file_ioctl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS)
@@ -8124,6 +8493,14 @@
@rm -f linkat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+linkat--secontext$(EXEEXT): $(linkat__secontext_OBJECTS) $(linkat__secontext_DEPENDENCIES) $(EXTRA_linkat__secontext_DEPENDENCIES)
+ @rm -f linkat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_OBJECTS) $(linkat__secontext_LDADD) $(LIBS)
+
+linkat--secontext_full$(EXEEXT): $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_DEPENDENCIES) $(EXTRA_linkat__secontext_full_DEPENDENCIES)
+ @rm -f linkat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS)
+
list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES)
@rm -f list_sigaction_signum$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS)
@@ -8756,6 +9133,14 @@
@rm -f open$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
+open--secontext$(EXEEXT): $(open__secontext_OBJECTS) $(open__secontext_DEPENDENCIES) $(EXTRA_open__secontext_DEPENDENCIES)
+ @rm -f open--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open__secontext_OBJECTS) $(open__secontext_LDADD) $(LIBS)
+
+open--secontext_full$(EXEEXT): $(open__secontext_full_OBJECTS) $(open__secontext_full_DEPENDENCIES) $(EXTRA_open__secontext_full_DEPENDENCIES)
+ @rm -f open--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS)
+
open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES)
@rm -f open_tree$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS)
@@ -8768,6 +9153,14 @@
@rm -f openat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
+openat--secontext$(EXEEXT): $(openat__secontext_OBJECTS) $(openat__secontext_DEPENDENCIES) $(EXTRA_openat__secontext_DEPENDENCIES)
+ @rm -f openat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat__secontext_OBJECTS) $(openat__secontext_LDADD) $(LIBS)
+
+openat--secontext_full$(EXEEXT): $(openat__secontext_full_OBJECTS) $(openat__secontext_full_DEPENDENCIES) $(EXTRA_openat__secontext_full_DEPENDENCIES)
+ @rm -f openat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS)
+
openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES)
@rm -f openat2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS)
@@ -10094,6 +10487,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker
@@ -10123,6 +10518,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker
@@ -10176,25 +10573,46 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_wait.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erestartsys.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker
@@ -10202,6 +10620,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker
@@ -10431,6 +10851,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-secontext.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker
@@ -10443,6 +10864,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker
@@ -10601,9 +11024,13 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker
@@ -11300,6 +11727,20 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
+libtests_a-secontext.o: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.o -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+
+libtests_a-secontext.obj: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.obj -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+
libtests_a-signal2name.o: signal2name.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po
@@ -13841,6 +14282,12 @@
$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/access--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -13883,6 +14330,12 @@
$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/chmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14024,13 +14477,43 @@
$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/execve--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/execveat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -14045,6 +14528,12 @@
$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fanotify_mark--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14060,12 +14549,30 @@
$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchmod-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmod-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmodat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14075,6 +14582,12 @@
$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchownat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14096,6 +14609,12 @@
$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/file_handle--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14690,6 +15209,12 @@
$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/linkat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -15107,6 +15632,12 @@
$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/open--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -15116,6 +15647,12 @@
$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/openat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
Index: strace-5.7/tests-m32/Makefile.in
===================================================================
--- strace-5.7.orig/tests-m32/Makefile.in 2021-08-24 21:08:35.467311943 +0200
+++ strace-5.7/tests-m32/Makefile.in 2021-08-24 21:08:43.289245739 +0200
@@ -22,6 +22,8 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
+# Generated by ./tests/gen_secontext.sh from ./tests/gen_tests.in; do not edit.
+
# scno.h make rules for strace.
#
# Copyright (c) 2017-2019 Dmitry V. Levin <ldv@altlinux.org>
@@ -102,8 +104,8 @@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
- attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) _newselect-P$(EXEEXT) \
+ answer$(EXEEXT) attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \
bpf-obj_get_info_by_fd$(EXEEXT) \
@@ -221,7 +223,7 @@
xetpriority--pidns-translation$(EXEEXT) \
xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT)
@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
-TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_3)
subdir = tests-m32
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
@@ -270,6 +272,7 @@
$(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
$(top_srcdir)/m4/st_libunwind.m4 \
$(top_srcdir)/m4/st_save_restore_var.m4 \
+ $(top_srcdir)/m4/st_selinux.m4 \
$(top_srcdir)/m4/st_stacktrace.m4 \
$(top_srcdir)/m4/st_warn_cflags.m4 \
$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -298,7 +301,8 @@
epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
- execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+ execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \
+ faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) fadvise64$(EXEEXT) \
fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
@@ -543,6 +547,26 @@
xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
+am__EXEEXT_2 = access--secontext$(EXEEXT) \
+ access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \
+ chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \
+ execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \
+ execveat--secontext_full$(EXEEXT) \
+ faccessat--secontext$(EXEEXT) \
+ faccessat--secontext_full$(EXEEXT) \
+ faccessat-y--secontext$(EXEEXT) \
+ faccessat-y--secontext_full$(EXEEXT) \
+ fanotify_mark--secontext$(EXEEXT) \
+ fanotify_mark--secontext_full$(EXEEXT) \
+ fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \
+ fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \
+ fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \
+ fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \
+ file_handle--secontext$(EXEEXT) \
+ file_handle--secontext_full$(EXEEXT) \
+ linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \
+ open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \
+ openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT)
ARFLAGS = cru
AM_V_AR = $(am__v_AR_@AM_V@)
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
@@ -571,6 +595,7 @@
libtests_a-printxval-Xabbrev.$(OBJEXT) \
libtests_a-printxval-Xraw.$(OBJEXT) \
libtests_a-printxval-Xverbose.$(OBJEXT) \
+ libtests_a-secontext.$(OBJEXT) \
libtests_a-signal2name.$(OBJEXT) \
libtests_a-skip_unavailable.$(OBJEXT) \
libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \
@@ -600,6 +625,15 @@
access_OBJECTS = access.$(OBJEXT)
access_LDADD = $(LDADD)
access_DEPENDENCIES = libtests.a
+access__secontext_SOURCES = access--secontext.c
+access__secontext_OBJECTS = access--secontext.$(OBJEXT)
+am__DEPENDENCIES_1 =
+@HAVE_M32_SELINUX_RUNTIME_TRUE@am__DEPENDENCIES_2 = \
+@HAVE_M32_SELINUX_RUNTIME_TRUE@ $(am__DEPENDENCIES_1)
+access__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+access__secontext_full_SOURCES = access--secontext_full.c
+access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT)
+access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
acct_SOURCES = acct.c
acct_OBJECTS = acct.$(OBJEXT)
acct_LDADD = $(LDADD)
@@ -718,6 +752,12 @@
chmod_OBJECTS = chmod.$(OBJEXT)
chmod_LDADD = $(LDADD)
chmod_DEPENDENCIES = libtests.a
+chmod__secontext_SOURCES = chmod--secontext.c
+chmod__secontext_OBJECTS = chmod--secontext.$(OBJEXT)
+chmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+chmod__secontext_full_SOURCES = chmod--secontext_full.c
+chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT)
+chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
chown_SOURCES = chown.c
chown_OBJECTS = chown.$(OBJEXT)
chown_LDADD = $(LDADD)
@@ -828,7 +868,6 @@
creat_DEPENDENCIES = libtests.a
delay_SOURCES = delay.c
delay_OBJECTS = delay.$(OBJEXT)
-am__DEPENDENCIES_1 =
delay_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
delete_module_SOURCES = delete_module.c
delete_module_OBJECTS = delete_module.$(OBJEXT)
@@ -930,6 +969,12 @@
execve_OBJECTS = execve.$(OBJEXT)
execve_LDADD = $(LDADD)
execve_DEPENDENCIES = libtests.a
+execve__secontext_SOURCES = execve--secontext.c
+execve__secontext_OBJECTS = execve--secontext.$(OBJEXT)
+execve__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+execve__secontext_full_SOURCES = execve--secontext_full.c
+execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT)
+execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
execve_v_SOURCES = execve-v.c
execve_v_OBJECTS = execve-v.$(OBJEXT)
execve_v_LDADD = $(LDADD)
@@ -938,6 +983,12 @@
execveat_OBJECTS = execveat.$(OBJEXT)
execveat_LDADD = $(LDADD)
execveat_DEPENDENCIES = libtests.a
+execveat__secontext_SOURCES = execveat--secontext.c
+execveat__secontext_OBJECTS = execveat--secontext.$(OBJEXT)
+execveat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+execveat__secontext_full_SOURCES = execveat--secontext_full.c
+execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT)
+execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
execveat_v_SOURCES = execveat-v.c
execveat_v_OBJECTS = execveat-v.$(OBJEXT)
execveat_v_LDADD = $(LDADD)
@@ -946,6 +997,34 @@
faccessat_OBJECTS = faccessat.$(OBJEXT)
faccessat_LDADD = $(LDADD)
faccessat_DEPENDENCIES = libtests.a
+faccessat__secontext_SOURCES = faccessat--secontext.c
+faccessat__secontext_OBJECTS = faccessat--secontext.$(OBJEXT)
+faccessat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+faccessat__secontext_full_SOURCES = faccessat--secontext_full.c
+faccessat__secontext_full_OBJECTS = \
+ faccessat--secontext_full.$(OBJEXT)
+faccessat__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
+faccessat_P_SOURCES = faccessat-P.c
+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT)
+faccessat_P_LDADD = $(LDADD)
+faccessat_P_DEPENDENCIES = libtests.a
+faccessat_y_SOURCES = faccessat-y.c
+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT)
+faccessat_y_LDADD = $(LDADD)
+faccessat_y_DEPENDENCIES = libtests.a
+faccessat_y__secontext_SOURCES = faccessat-y--secontext.c
+faccessat_y__secontext_OBJECTS = faccessat-y--secontext.$(OBJEXT)
+faccessat_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+faccessat_y__secontext_full_SOURCES = faccessat-y--secontext_full.c
+faccessat_y__secontext_full_OBJECTS = \
+ faccessat-y--secontext_full.$(OBJEXT)
+faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
+faccessat_yy_SOURCES = faccessat-yy.c
+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT)
+faccessat_yy_LDADD = $(LDADD)
+faccessat_yy_DEPENDENCIES = libtests.a
fadvise64_SOURCES = fadvise64.c
fadvise64_OBJECTS = fadvise64.$(OBJEXT)
fadvise64_LDADD = $(LDADD)
@@ -966,6 +1045,15 @@
fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT)
fanotify_mark_LDADD = $(LDADD)
fanotify_mark_DEPENDENCIES = libtests.a
+fanotify_mark__secontext_SOURCES = fanotify_mark--secontext.c
+fanotify_mark__secontext_OBJECTS = fanotify_mark--secontext.$(OBJEXT)
+fanotify_mark__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fanotify_mark__secontext_full_SOURCES = \
+ fanotify_mark--secontext_full.c
+fanotify_mark__secontext_full_OBJECTS = \
+ fanotify_mark--secontext_full.$(OBJEXT)
+fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c
fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT)
fanotify_mark_Xabbrev_LDADD = $(LDADD)
@@ -986,14 +1074,32 @@
fchmod_OBJECTS = fchmod.$(OBJEXT)
fchmod_LDADD = $(LDADD)
fchmod_DEPENDENCIES = libtests.a
+fchmod__secontext_SOURCES = fchmod--secontext.c
+fchmod__secontext_OBJECTS = fchmod--secontext.$(OBJEXT)
+fchmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmod__secontext_full_SOURCES = fchmod--secontext_full.c
+fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT)
+fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchmod_y_SOURCES = fchmod-y.c
fchmod_y_OBJECTS = fchmod-y.$(OBJEXT)
fchmod_y_LDADD = $(LDADD)
fchmod_y_DEPENDENCIES = libtests.a
+fchmod_y__secontext_SOURCES = fchmod-y--secontext.c
+fchmod_y__secontext_OBJECTS = fchmod-y--secontext.$(OBJEXT)
+fchmod_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c
+fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT)
+fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchmodat_SOURCES = fchmodat.c
fchmodat_OBJECTS = fchmodat.$(OBJEXT)
fchmodat_LDADD = $(LDADD)
fchmodat_DEPENDENCIES = libtests.a
+fchmodat__secontext_SOURCES = fchmodat--secontext.c
+fchmodat__secontext_OBJECTS = fchmodat--secontext.$(OBJEXT)
+fchmodat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c
+fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT)
+fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchown_SOURCES = fchown.c
fchown_OBJECTS = fchown.$(OBJEXT)
fchown_LDADD = $(LDADD)
@@ -1006,6 +1112,12 @@
fchownat_OBJECTS = fchownat.$(OBJEXT)
fchownat_LDADD = $(LDADD)
fchownat_DEPENDENCIES = libtests.a
+fchownat__secontext_SOURCES = fchownat--secontext.c
+fchownat__secontext_OBJECTS = fchownat--secontext.$(OBJEXT)
+fchownat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchownat__secontext_full_SOURCES = fchownat--secontext_full.c
+fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT)
+fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fcntl_SOURCES = fcntl.c
fcntl_OBJECTS = fcntl.$(OBJEXT)
fcntl_LDADD = $(LDADD)
@@ -1035,6 +1147,14 @@
file_handle_OBJECTS = file_handle.$(OBJEXT)
file_handle_LDADD = $(LDADD)
file_handle_DEPENDENCIES = libtests.a
+file_handle__secontext_SOURCES = file_handle--secontext.c
+file_handle__secontext_OBJECTS = file_handle--secontext.$(OBJEXT)
+file_handle__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+file_handle__secontext_full_SOURCES = file_handle--secontext_full.c
+file_handle__secontext_full_OBJECTS = \
+ file_handle--secontext_full.$(OBJEXT)
+file_handle__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
file_ioctl_SOURCES = file_ioctl.c
file_ioctl_OBJECTS = file_ioctl.$(OBJEXT)
file_ioctl_LDADD = $(LDADD)
@@ -1886,6 +2006,12 @@
linkat_OBJECTS = linkat.$(OBJEXT)
linkat_LDADD = $(LDADD)
linkat_DEPENDENCIES = libtests.a
+linkat__secontext_SOURCES = linkat--secontext.c
+linkat__secontext_OBJECTS = linkat--secontext.$(OBJEXT)
+linkat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+linkat__secontext_full_SOURCES = linkat--secontext_full.c
+linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT)
+linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
list_sigaction_signum_SOURCES = list_sigaction_signum.c
list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT)
list_sigaction_signum_LDADD = $(LDADD)
@@ -2530,6 +2656,12 @@
open_OBJECTS = open.$(OBJEXT)
open_LDADD = $(LDADD)
open_DEPENDENCIES = libtests.a
+open__secontext_SOURCES = open--secontext.c
+open__secontext_OBJECTS = open--secontext.$(OBJEXT)
+open__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+open__secontext_full_SOURCES = open--secontext_full.c
+open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT)
+open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
open_tree_SOURCES = open_tree.c
open_tree_OBJECTS = open_tree.$(OBJEXT)
open_tree_LDADD = $(LDADD)
@@ -2542,6 +2674,12 @@
openat_OBJECTS = openat.$(OBJEXT)
openat_LDADD = $(LDADD)
openat_DEPENDENCIES = libtests.a
+openat__secontext_SOURCES = openat--secontext.c
+openat__secontext_OBJECTS = openat--secontext.$(OBJEXT)
+openat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+openat__secontext_full_SOURCES = openat--secontext_full.c
+openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT)
+openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
openat2_SOURCES = openat2.c
openat2_OBJECTS = openat2.$(OBJEXT)
openat2_LDADD = $(LDADD)
@@ -4487,7 +4625,8 @@
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
- accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+ accept4.c access.c access--secontext.c \
+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \
aio_pgetevents.c alarm.c answer.c attach-f-p.c \
attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \
block_reset_raise_run.c block_reset_run.c bpf.c \
@@ -4495,7 +4634,8 @@
bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
- check_sigign.c chmod.c chown.c chown32.c chroot.c \
+ check_sigign.c chmod.c chmod--secontext.c \
+ chmod--secontext_full.c chown.c chown32.c chroot.c \
clock_adjtime.c clock_nanosleep.c clock_xettime.c \
clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
@@ -4509,25 +4649,35 @@
dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \
epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \
- execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
- fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
- fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
- fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
- fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
- fcntl--pidns-translation.c fcntl64.c \
- fcntl64--pidns-translation.c fdatasync.c fflush.c \
- file_handle.c file_ioctl.c filter-unavailable.c \
- filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
- flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+ execve--secontext.c execve--secontext_full.c execve-v.c \
+ execveat.c execveat--secontext.c execveat--secontext_full.c \
+ execveat-v.c faccessat.c faccessat--secontext.c \
+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \
+ faccessat-y--secontext.c faccessat-y--secontext_full.c \
+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \
+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \
+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \
+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \
+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \
+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \
+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \
+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \
+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \
+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+ file_handle.c file_handle--secontext.c \
+ file_handle--secontext_full.c file_ioctl.c \
+ filter-unavailable.c filter_seccomp-flag.c \
+ filter_seccomp-perf.c finit_module.c flock.c \
+ fork--pidns-translation.c fork-f.c fsconfig.c fsconfig-P.c \
+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \
+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \
+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \
+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \
+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \
+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \
+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \
+ getpgrp.c getpgrp--pidns-translation.c getpid.c \
getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
getresgid32.c getresuid.c getresuid32.c getrlimit.c \
getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
@@ -4578,7 +4728,8 @@
kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
keyctl-Xraw.c keyctl-Xverbose.c kill.c \
kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+ lchown32.c link.c linkat.c linkat--secontext.c \
+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \
localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
lstat64.c madvise.c maybe_switch_current_tcp.c \
maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
@@ -4629,23 +4780,25 @@
old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
- orphaned_process_group.c osf_utimes.c pause.c pc.c \
- perf_event_open.c perf_event_open_nonverbose.c \
- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ oldstat.c open.c open--secontext.c open--secontext_full.c \
+ open_tree.c open_tree-P.c openat.c openat--secontext.c \
+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \
+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \
+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \
+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \
+ osf_utimes.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c personality-Xabbrev.c personality-Xraw.c \
+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \
+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \
+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \
+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \
+ pidfd_open-yy.c pidfd_send_signal.c \
+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \
+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \
prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \
preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \
@@ -4735,7 +4888,8 @@
xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
zeroargc.c
DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
- accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+ accept.c accept4.c access.c access--secontext.c \
+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \
aio_pgetevents.c alarm.c answer.c attach-f-p.c \
attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \
block_reset_raise_run.c block_reset_run.c bpf.c \
@@ -4743,7 +4897,8 @@
bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
- check_sigign.c chmod.c chown.c chown32.c chroot.c \
+ check_sigign.c chmod.c chmod--secontext.c \
+ chmod--secontext_full.c chown.c chown32.c chroot.c \
clock_adjtime.c clock_nanosleep.c clock_xettime.c \
clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
@@ -4757,25 +4912,35 @@
dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \
epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \
- execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
- fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
- fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
- fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
- fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
- fcntl--pidns-translation.c fcntl64.c \
- fcntl64--pidns-translation.c fdatasync.c fflush.c \
- file_handle.c file_ioctl.c filter-unavailable.c \
- filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
- flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+ execve--secontext.c execve--secontext_full.c execve-v.c \
+ execveat.c execveat--secontext.c execveat--secontext_full.c \
+ execveat-v.c faccessat.c faccessat--secontext.c \
+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \
+ faccessat-y--secontext.c faccessat-y--secontext_full.c \
+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \
+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \
+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \
+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \
+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \
+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \
+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \
+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \
+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \
+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+ file_handle.c file_handle--secontext.c \
+ file_handle--secontext_full.c file_ioctl.c \
+ filter-unavailable.c filter_seccomp-flag.c \
+ filter_seccomp-perf.c finit_module.c flock.c \
+ fork--pidns-translation.c fork-f.c fsconfig.c fsconfig-P.c \
+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \
+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \
+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \
+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \
+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \
+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \
+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \
+ getpgrp.c getpgrp--pidns-translation.c getpid.c \
getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
getresgid32.c getresuid.c getresuid32.c getrlimit.c \
getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
@@ -4826,7 +4991,8 @@
kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
keyctl-Xraw.c keyctl-Xverbose.c kill.c \
kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+ lchown32.c link.c linkat.c linkat--secontext.c \
+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \
localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
lstat64.c madvise.c maybe_switch_current_tcp.c \
maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
@@ -4877,23 +5043,25 @@
old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
- orphaned_process_group.c osf_utimes.c pause.c pc.c \
- perf_event_open.c perf_event_open_nonverbose.c \
- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ oldstat.c open.c open--secontext.c open--secontext_full.c \
+ open_tree.c open_tree-P.c openat.c openat--secontext.c \
+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \
+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \
+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \
+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \
+ osf_utimes.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c personality-Xabbrev.c personality-Xraw.c \
+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \
+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \
+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \
+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \
+ pidfd_open-yy.c pidfd_send_signal.c \
+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \
+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \
prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \
preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \
@@ -5194,7 +5362,7 @@
bases=`echo $$bases`
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
-@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_3 = strace-k.test strace-k-p.test \
@ENABLE_STACKTRACE_TRUE@ $(am__append_1)
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
@@ -5216,7 +5384,8 @@
esac
am__DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
$(srcdir)/gen_tests.am $(srcdir)/pure_executables.am \
- $(top_srcdir)/depcomp $(top_srcdir)/test-driver COPYING
+ $(srcdir)/secontext.am $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver COPYING
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -5357,6 +5526,9 @@
libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
libiberty_LDFLAGS = @libiberty_LDFLAGS@
libiberty_LIBS = @libiberty_LIBS@
+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@
+libselinux_LDFLAGS = @libselinux_LDFLAGS@
+libselinux_LIBS = @libselinux_LIBS@
libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
libunwind_LDFLAGS = @libunwind_LDFLAGS@
libunwind_LIBS = @libunwind_LIBS@
@@ -5400,6 +5572,8 @@
-DTESTS_SIZEOF_LONG=$(SIZEOF_LONG)
AM_LDFLAGS = $(ARCH_MFLAGS)
+@HAVE_M32_SELINUX_RUNTIME_FALSE@libselinux_LDADD =
+@HAVE_M32_SELINUX_RUNTIME_TRUE@libselinux_LDADD = $(libselinux_LIBS)
libtests_a_SOURCES = \
create_nl_socket.c \
create_tmpfile.c \
@@ -5426,6 +5600,8 @@
printxval-Xabbrev.c \
printxval-Xraw.c \
printxval-Xverbose.c \
+ secontext.c \
+ secontext.h \
signal2name.c \
skip_unavailable.c \
sprintrc.c \
@@ -5505,6 +5681,9 @@
execve \
execveat \
faccessat \
+ faccessat-P \
+ faccessat-y \
+ faccessat-yy \
fadvise64 \
fadvise64_64 \
fallocate \
@@ -6077,6 +6256,69 @@
xettimeofday \
#
+secontext_EXECUTABLES = \
+ access--secontext \
+ access--secontext_full \
+ chmod--secontext \
+ chmod--secontext_full \
+ execve--secontext \
+ execve--secontext_full \
+ execveat--secontext \
+ execveat--secontext_full \
+ faccessat--secontext \
+ faccessat--secontext_full \
+ faccessat-y--secontext \
+ faccessat-y--secontext_full \
+ fanotify_mark--secontext \
+ fanotify_mark--secontext_full \
+ fchmod--secontext \
+ fchmod--secontext_full \
+ fchmod-y--secontext \
+ fchmod-y--secontext_full \
+ fchmodat--secontext \
+ fchmodat--secontext_full \
+ fchownat--secontext \
+ fchownat--secontext_full \
+ file_handle--secontext \
+ file_handle--secontext_full \
+ linkat--secontext \
+ linkat--secontext_full \
+ open--secontext \
+ open--secontext_full \
+ openat--secontext \
+ openat--secontext_full \
+ #
+
+access__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+open__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
attach_f_p_LDADD = -lpthread $(LDADD)
count_f_LDADD = -lpthread $(LDADD)
delay_LDADD = $(clock_LIBS) $(LDADD)
@@ -6129,14 +6371,15 @@
# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
- accept4.gen.test access.gen.test acct.gen.test \
- add_key.gen.test adjtimex.gen.test aio.gen.test \
- aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \
- bpf-obj_get_info_by_fd.gen.test \
+ accept4.gen.test access.gen.test access--secontext.gen.test \
+ access--secontext_full.gen.test acct.gen.test add_key.gen.test \
+ adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \
+ alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \
bpf-obj_get_info_by_fd-prog.gen.test \
bpf-obj_get_info_by_fd-prog-v.gen.test \
bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \
- btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \
+ btrfs.gen.test chmod.gen.test chmod--secontext.gen.test \
+ chmod--secontext_full.gen.test chown.gen.test chown32.gen.test \
chroot.gen.test clock.gen.test clock_adjtime.gen.test \
clock_nanosleep.gen.test clock_xettime.gen.test \
clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \
@@ -6155,21 +6398,36 @@
dup3-P.gen.test dup3-y.gen.test dup3-yy.gen.test \
epoll_create.gen.test epoll_create1.gen.test \
epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test \
- erestartsys.gen.test execveat.gen.test execveat-v.gen.test \
- faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test \
+ erestartsys.gen.test execve--secontext.gen.test \
+ execve--secontext_full.gen.test execveat.gen.test \
+ execveat--secontext.gen.test execveat--secontext_full.gen.test \
+ execveat-v.gen.test faccessat--secontext.gen.test \
+ faccessat--secontext_full.gen.test faccessat-P.gen.test \
+ faccessat-y.gen.test faccessat-y--secontext.gen.test \
+ faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \
+ fadvise64_64.gen.test fallocate.gen.test \
fanotify_init.gen.test fanotify_mark.gen.test \
+ fanotify_mark--secontext.gen.test \
+ fanotify_mark--secontext_full.gen.test \
fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
fanotify_mark-Xverbose.gen.test fchdir.gen.test \
- fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \
- fchown.gen.test fchown32.gen.test fchownat.gen.test \
+ fchmod.gen.test fchmod--secontext.gen.test \
+ fchmod--secontext_full.gen.test fchmod-y.gen.test \
+ fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \
+ fchmodat.gen.test fchmodat--secontext.gen.test \
+ fchmodat--secontext_full.gen.test fchown.gen.test \
+ fchown32.gen.test fchownat.gen.test \
+ fchownat--secontext.gen.test fchownat--secontext_full.gen.test \
fcntl.gen.test fcntl--pidns-translation.gen.test \
fcntl64.gen.test fcntl64--pidns-translation.gen.test \
fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
- filter_seccomp.gen.test filter_seccomp-flag.gen.test \
- finit_module.gen.test flock.gen.test fork-f.gen.test \
- fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
- fsopen.gen.test fspick.gen.test fspick-P.gen.test \
- fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
+ file_handle--secontext.gen.test \
+ file_handle--secontext_full.gen.test filter_seccomp.gen.test \
+ filter_seccomp-flag.gen.test finit_module.gen.test \
+ flock.gen.test fork-f.gen.test fsconfig.gen.test \
+ fsconfig-P.gen.test fsmount.gen.test fsopen.gen.test \
+ fspick.gen.test fspick-P.gen.test fstat.gen.test \
+ fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
fstat-Xverbose.gen.test fstat64.gen.test \
fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \
fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \
@@ -6259,8 +6517,9 @@
keyctl-Xverbose.gen.test kill.gen.test \
kill--pidns-translation.gen.test ksysent.gen.test \
lchown.gen.test lchown32.gen.test link.gen.test \
- linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
- lstat64.gen.test madvise.gen.test \
+ linkat.gen.test linkat--secontext.gen.test \
+ linkat--secontext_full.gen.test lookup_dcookie.gen.test \
+ lstat.gen.test lstat64.gen.test madvise.gen.test \
maybe_switch_current_tcp.gen.test \
maybe_switch_current_tcp--quiet-thread-execve.gen.test \
mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \
@@ -6328,14 +6587,17 @@
old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \
oldselect.gen.test oldselect-P.gen.test \
oldselect-efault.gen.test oldselect-efault-P.gen.test \
- oldstat.gen.test open.gen.test open_tree.gen.test \
- open_tree-P.gen.test openat.gen.test openat2.gen.test \
- openat2-Xabbrev.gen.test openat2-Xraw.gen.test \
- openat2-Xverbose.gen.test openat2-v.gen.test \
- openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \
- openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \
- openat2-y.gen.test orphaned_process_group.gen.test \
- osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \
+ oldstat.gen.test open.gen.test open--secontext.gen.test \
+ open--secontext_full.gen.test open_tree.gen.test \
+ open_tree-P.gen.test openat.gen.test \
+ openat--secontext.gen.test openat--secontext_full.gen.test \
+ openat2.gen.test openat2-Xabbrev.gen.test \
+ openat2-Xraw.gen.test openat2-Xverbose.gen.test \
+ openat2-v.gen.test openat2-v-y.gen.test \
+ openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \
+ openat2-v-y-Xverbose.gen.test openat2-y.gen.test \
+ orphaned_process_group.gen.test osf_utimes.gen.test \
+ pause.gen.test perf_event_open.gen.test \
perf_event_open_nonverbose.gen.test \
perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \
personality-Xraw.gen.test personality-Xverbose.gen.test \
@@ -6806,7 +7068,7 @@
.SUFFIXES:
.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -6826,7 +7088,7 @@
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
-$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty):
+$(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -6868,6 +7130,14 @@
@rm -f access$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS)
+access--secontext$(EXEEXT): $(access__secontext_OBJECTS) $(access__secontext_DEPENDENCIES) $(EXTRA_access__secontext_DEPENDENCIES)
+ @rm -f access--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access__secontext_OBJECTS) $(access__secontext_LDADD) $(LIBS)
+
+access--secontext_full$(EXEEXT): $(access__secontext_full_OBJECTS) $(access__secontext_full_DEPENDENCIES) $(EXTRA_access__secontext_full_DEPENDENCIES)
+ @rm -f access--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS)
+
acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES)
@rm -f acct$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS)
@@ -6984,6 +7254,14 @@
@rm -f chmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
+chmod--secontext$(EXEEXT): $(chmod__secontext_OBJECTS) $(chmod__secontext_DEPENDENCIES) $(EXTRA_chmod__secontext_DEPENDENCIES)
+ @rm -f chmod--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_OBJECTS) $(chmod__secontext_LDADD) $(LIBS)
+
+chmod--secontext_full$(EXEEXT): $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_DEPENDENCIES) $(EXTRA_chmod__secontext_full_DEPENDENCIES)
+ @rm -f chmod--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS)
+
chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES)
@rm -f chown$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS)
@@ -7196,6 +7474,14 @@
@rm -f execve$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS)
+execve--secontext$(EXEEXT): $(execve__secontext_OBJECTS) $(execve__secontext_DEPENDENCIES) $(EXTRA_execve__secontext_DEPENDENCIES)
+ @rm -f execve--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve__secontext_OBJECTS) $(execve__secontext_LDADD) $(LIBS)
+
+execve--secontext_full$(EXEEXT): $(execve__secontext_full_OBJECTS) $(execve__secontext_full_DEPENDENCIES) $(EXTRA_execve__secontext_full_DEPENDENCIES)
+ @rm -f execve--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS)
+
execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES)
@rm -f execve-v$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS)
@@ -7204,6 +7490,14 @@
@rm -f execveat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS)
+execveat--secontext$(EXEEXT): $(execveat__secontext_OBJECTS) $(execveat__secontext_DEPENDENCIES) $(EXTRA_execveat__secontext_DEPENDENCIES)
+ @rm -f execveat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_OBJECTS) $(execveat__secontext_LDADD) $(LIBS)
+
+execveat--secontext_full$(EXEEXT): $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_DEPENDENCIES) $(EXTRA_execveat__secontext_full_DEPENDENCIES)
+ @rm -f execveat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS)
+
execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES)
@rm -f execveat-v$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS)
@@ -7212,6 +7506,34 @@
@rm -f faccessat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
+faccessat--secontext$(EXEEXT): $(faccessat__secontext_OBJECTS) $(faccessat__secontext_DEPENDENCIES) $(EXTRA_faccessat__secontext_DEPENDENCIES)
+ @rm -f faccessat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_OBJECTS) $(faccessat__secontext_LDADD) $(LIBS)
+
+faccessat--secontext_full$(EXEEXT): $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_DEPENDENCIES)
+ @rm -f faccessat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS)
+
+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES)
+ @rm -f faccessat-P$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS)
+
+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES)
+ @rm -f faccessat-y$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS)
+
+faccessat-y--secontext$(EXEEXT): $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_DEPENDENCIES)
+ @rm -f faccessat-y--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_LDADD) $(LIBS)
+
+faccessat-y--secontext_full$(EXEEXT): $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_DEPENDENCIES)
+ @rm -f faccessat-y--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS)
+
+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES)
+ @rm -f faccessat-yy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS)
+
fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES)
@rm -f fadvise64$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
@@ -7232,6 +7554,14 @@
@rm -f fanotify_mark$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS)
+fanotify_mark--secontext$(EXEEXT): $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_DEPENDENCIES)
+ @rm -f fanotify_mark--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_LDADD) $(LIBS)
+
+fanotify_mark--secontext_full$(EXEEXT): $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_DEPENDENCIES)
+ @rm -f fanotify_mark--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS)
+
fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES)
@rm -f fanotify_mark-Xabbrev$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS)
@@ -7252,14 +7582,38 @@
@rm -f fchmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
+fchmod--secontext$(EXEEXT): $(fchmod__secontext_OBJECTS) $(fchmod__secontext_DEPENDENCIES) $(EXTRA_fchmod__secontext_DEPENDENCIES)
+ @rm -f fchmod--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_OBJECTS) $(fchmod__secontext_LDADD) $(LIBS)
+
+fchmod--secontext_full$(EXEEXT): $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_DEPENDENCIES)
+ @rm -f fchmod--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_LDADD) $(LIBS)
+
fchmod-y$(EXEEXT): $(fchmod_y_OBJECTS) $(fchmod_y_DEPENDENCIES) $(EXTRA_fchmod_y_DEPENDENCIES)
@rm -f fchmod-y$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmod_y_OBJECTS) $(fchmod_y_LDADD) $(LIBS)
+fchmod-y--secontext$(EXEEXT): $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_DEPENDENCIES)
+ @rm -f fchmod-y--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_LDADD) $(LIBS)
+
+fchmod-y--secontext_full$(EXEEXT): $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_DEPENDENCIES)
+ @rm -f fchmod-y--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS)
+
fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES)
@rm -f fchmodat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
+fchmodat--secontext$(EXEEXT): $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_DEPENDENCIES) $(EXTRA_fchmodat__secontext_DEPENDENCIES)
+ @rm -f fchmodat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_LDADD) $(LIBS)
+
+fchmodat--secontext_full$(EXEEXT): $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_DEPENDENCIES)
+ @rm -f fchmodat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS)
+
fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES)
@rm -f fchown$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS)
@@ -7272,6 +7626,14 @@
@rm -f fchownat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS)
+fchownat--secontext$(EXEEXT): $(fchownat__secontext_OBJECTS) $(fchownat__secontext_DEPENDENCIES) $(EXTRA_fchownat__secontext_DEPENDENCIES)
+ @rm -f fchownat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_OBJECTS) $(fchownat__secontext_LDADD) $(LIBS)
+
+fchownat--secontext_full$(EXEEXT): $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_DEPENDENCIES)
+ @rm -f fchownat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS)
+
fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES)
@rm -f fcntl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
@@ -7300,6 +7662,14 @@
@rm -f file_handle$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS)
+file_handle--secontext$(EXEEXT): $(file_handle__secontext_OBJECTS) $(file_handle__secontext_DEPENDENCIES) $(EXTRA_file_handle__secontext_DEPENDENCIES)
+ @rm -f file_handle--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_OBJECTS) $(file_handle__secontext_LDADD) $(LIBS)
+
+file_handle--secontext_full$(EXEEXT): $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_DEPENDENCIES)
+ @rm -f file_handle--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS)
+
file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES)
@rm -f file_ioctl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS)
@@ -8124,6 +8494,14 @@
@rm -f linkat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+linkat--secontext$(EXEEXT): $(linkat__secontext_OBJECTS) $(linkat__secontext_DEPENDENCIES) $(EXTRA_linkat__secontext_DEPENDENCIES)
+ @rm -f linkat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_OBJECTS) $(linkat__secontext_LDADD) $(LIBS)
+
+linkat--secontext_full$(EXEEXT): $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_DEPENDENCIES) $(EXTRA_linkat__secontext_full_DEPENDENCIES)
+ @rm -f linkat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS)
+
list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES)
@rm -f list_sigaction_signum$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS)
@@ -8756,6 +9134,14 @@
@rm -f open$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
+open--secontext$(EXEEXT): $(open__secontext_OBJECTS) $(open__secontext_DEPENDENCIES) $(EXTRA_open__secontext_DEPENDENCIES)
+ @rm -f open--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open__secontext_OBJECTS) $(open__secontext_LDADD) $(LIBS)
+
+open--secontext_full$(EXEEXT): $(open__secontext_full_OBJECTS) $(open__secontext_full_DEPENDENCIES) $(EXTRA_open__secontext_full_DEPENDENCIES)
+ @rm -f open--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS)
+
open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES)
@rm -f open_tree$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS)
@@ -8768,6 +9154,14 @@
@rm -f openat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
+openat--secontext$(EXEEXT): $(openat__secontext_OBJECTS) $(openat__secontext_DEPENDENCIES) $(EXTRA_openat__secontext_DEPENDENCIES)
+ @rm -f openat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat__secontext_OBJECTS) $(openat__secontext_LDADD) $(LIBS)
+
+openat--secontext_full$(EXEEXT): $(openat__secontext_full_OBJECTS) $(openat__secontext_full_DEPENDENCIES) $(EXTRA_openat__secontext_full_DEPENDENCIES)
+ @rm -f openat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS)
+
openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES)
@rm -f openat2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS)
@@ -10094,6 +10488,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker
@@ -10123,6 +10519,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker
@@ -10176,25 +10574,46 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_wait.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erestartsys.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker
@@ -10202,6 +10621,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker
@@ -10431,6 +10852,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-secontext.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker
@@ -10443,6 +10865,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker
@@ -10601,9 +11025,13 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker
@@ -11300,6 +11728,20 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
+libtests_a-secontext.o: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.o -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+
+libtests_a-secontext.obj: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.obj -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+
libtests_a-signal2name.o: signal2name.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po
@@ -13841,6 +14283,12 @@
$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/access--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -13883,6 +14331,12 @@
$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/chmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14024,13 +14478,43 @@
$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/execve--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/execveat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -14045,6 +14529,12 @@
$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fanotify_mark--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14060,12 +14550,30 @@
$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchmod-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmod-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmodat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14075,6 +14583,12 @@
$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchownat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14096,6 +14610,12 @@
$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/file_handle--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14690,6 +15210,12 @@
$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/linkat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -15107,6 +15633,12 @@
$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/open--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -15116,6 +15648,12 @@
$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/openat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
Index: strace-5.7/tests-mx32/Makefile.in
===================================================================
--- strace-5.7.orig/tests-mx32/Makefile.in 2021-08-24 21:08:35.498311681 +0200
+++ strace-5.7/tests-mx32/Makefile.in 2021-08-24 21:08:43.292245714 +0200
@@ -22,6 +22,8 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
+# Generated by ./tests/gen_secontext.sh from ./tests/gen_tests.in; do not edit.
+
# scno.h make rules for strace.
#
# Copyright (c) 2017-2019 Dmitry V. Levin <ldv@altlinux.org>
@@ -102,8 +104,8 @@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-check_PROGRAMS = $(am__EXEEXT_1) _newselect-P$(EXEEXT) answer$(EXEEXT) \
- attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
+check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) _newselect-P$(EXEEXT) \
+ answer$(EXEEXT) attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) \
block_reset_raise_run$(EXEEXT) block_reset_run$(EXEEXT) \
bpf-obj_get_info_by_fd$(EXEEXT) \
@@ -221,7 +223,7 @@
xetpriority--pidns-translation$(EXEEXT) \
xet_robust_list--pidns-translation$(EXEEXT) zeroargc$(EXEEXT)
@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_1 = strace-k-demangle.test
-TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_2)
+TESTS = $(GEN_TESTS) $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_3)
subdir = tests-mx32
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/xlat/btrfs_compress_types.m4 \
@@ -270,6 +272,7 @@
$(top_srcdir)/m4/st_esyscmd_s.m4 $(top_srcdir)/m4/st_libdw.m4 \
$(top_srcdir)/m4/st_libunwind.m4 \
$(top_srcdir)/m4/st_save_restore_var.m4 \
+ $(top_srcdir)/m4/st_selinux.m4 \
$(top_srcdir)/m4/st_stacktrace.m4 \
$(top_srcdir)/m4/st_warn_cflags.m4 \
$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
@@ -298,7 +301,8 @@
epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
- execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+ execveat$(EXEEXT) faccessat$(EXEEXT) faccessat-P$(EXEEXT) \
+ faccessat-y$(EXEEXT) faccessat-yy$(EXEEXT) fadvise64$(EXEEXT) \
fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) \
fanotify_mark-Xabbrev$(EXEEXT) fanotify_mark-Xraw$(EXEEXT) \
@@ -543,6 +547,26 @@
xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
xet_thread_area_x86$(EXEEXT) xetitimer$(EXEEXT) \
xetpgid$(EXEEXT) xetpriority$(EXEEXT) xettimeofday$(EXEEXT)
+am__EXEEXT_2 = access--secontext$(EXEEXT) \
+ access--secontext_full$(EXEEXT) chmod--secontext$(EXEEXT) \
+ chmod--secontext_full$(EXEEXT) execve--secontext$(EXEEXT) \
+ execve--secontext_full$(EXEEXT) execveat--secontext$(EXEEXT) \
+ execveat--secontext_full$(EXEEXT) \
+ faccessat--secontext$(EXEEXT) \
+ faccessat--secontext_full$(EXEEXT) \
+ faccessat-y--secontext$(EXEEXT) \
+ faccessat-y--secontext_full$(EXEEXT) \
+ fanotify_mark--secontext$(EXEEXT) \
+ fanotify_mark--secontext_full$(EXEEXT) \
+ fchmod--secontext$(EXEEXT) fchmod--secontext_full$(EXEEXT) \
+ fchmod-y--secontext$(EXEEXT) fchmod-y--secontext_full$(EXEEXT) \
+ fchmodat--secontext$(EXEEXT) fchmodat--secontext_full$(EXEEXT) \
+ fchownat--secontext$(EXEEXT) fchownat--secontext_full$(EXEEXT) \
+ file_handle--secontext$(EXEEXT) \
+ file_handle--secontext_full$(EXEEXT) \
+ linkat--secontext$(EXEEXT) linkat--secontext_full$(EXEEXT) \
+ open--secontext$(EXEEXT) open--secontext_full$(EXEEXT) \
+ openat--secontext$(EXEEXT) openat--secontext_full$(EXEEXT)
ARFLAGS = cru
AM_V_AR = $(am__v_AR_@AM_V@)
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
@@ -571,6 +595,7 @@
libtests_a-printxval-Xabbrev.$(OBJEXT) \
libtests_a-printxval-Xraw.$(OBJEXT) \
libtests_a-printxval-Xverbose.$(OBJEXT) \
+ libtests_a-secontext.$(OBJEXT) \
libtests_a-signal2name.$(OBJEXT) \
libtests_a-skip_unavailable.$(OBJEXT) \
libtests_a-sprintrc.$(OBJEXT) libtests_a-status.$(OBJEXT) \
@@ -600,6 +625,15 @@
access_OBJECTS = access.$(OBJEXT)
access_LDADD = $(LDADD)
access_DEPENDENCIES = libtests.a
+access__secontext_SOURCES = access--secontext.c
+access__secontext_OBJECTS = access--secontext.$(OBJEXT)
+am__DEPENDENCIES_1 =
+@HAVE_MX32_SELINUX_RUNTIME_TRUE@am__DEPENDENCIES_2 = \
+@HAVE_MX32_SELINUX_RUNTIME_TRUE@ $(am__DEPENDENCIES_1)
+access__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+access__secontext_full_SOURCES = access--secontext_full.c
+access__secontext_full_OBJECTS = access--secontext_full.$(OBJEXT)
+access__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
acct_SOURCES = acct.c
acct_OBJECTS = acct.$(OBJEXT)
acct_LDADD = $(LDADD)
@@ -718,6 +752,12 @@
chmod_OBJECTS = chmod.$(OBJEXT)
chmod_LDADD = $(LDADD)
chmod_DEPENDENCIES = libtests.a
+chmod__secontext_SOURCES = chmod--secontext.c
+chmod__secontext_OBJECTS = chmod--secontext.$(OBJEXT)
+chmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+chmod__secontext_full_SOURCES = chmod--secontext_full.c
+chmod__secontext_full_OBJECTS = chmod--secontext_full.$(OBJEXT)
+chmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
chown_SOURCES = chown.c
chown_OBJECTS = chown.$(OBJEXT)
chown_LDADD = $(LDADD)
@@ -828,7 +868,6 @@
creat_DEPENDENCIES = libtests.a
delay_SOURCES = delay.c
delay_OBJECTS = delay.$(OBJEXT)
-am__DEPENDENCIES_1 =
delay_DEPENDENCIES = $(am__DEPENDENCIES_1) $(LDADD)
delete_module_SOURCES = delete_module.c
delete_module_OBJECTS = delete_module.$(OBJEXT)
@@ -930,6 +969,12 @@
execve_OBJECTS = execve.$(OBJEXT)
execve_LDADD = $(LDADD)
execve_DEPENDENCIES = libtests.a
+execve__secontext_SOURCES = execve--secontext.c
+execve__secontext_OBJECTS = execve--secontext.$(OBJEXT)
+execve__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+execve__secontext_full_SOURCES = execve--secontext_full.c
+execve__secontext_full_OBJECTS = execve--secontext_full.$(OBJEXT)
+execve__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
execve_v_SOURCES = execve-v.c
execve_v_OBJECTS = execve-v.$(OBJEXT)
execve_v_LDADD = $(LDADD)
@@ -938,6 +983,12 @@
execveat_OBJECTS = execveat.$(OBJEXT)
execveat_LDADD = $(LDADD)
execveat_DEPENDENCIES = libtests.a
+execveat__secontext_SOURCES = execveat--secontext.c
+execveat__secontext_OBJECTS = execveat--secontext.$(OBJEXT)
+execveat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+execveat__secontext_full_SOURCES = execveat--secontext_full.c
+execveat__secontext_full_OBJECTS = execveat--secontext_full.$(OBJEXT)
+execveat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
execveat_v_SOURCES = execveat-v.c
execveat_v_OBJECTS = execveat-v.$(OBJEXT)
execveat_v_LDADD = $(LDADD)
@@ -946,6 +997,34 @@
faccessat_OBJECTS = faccessat.$(OBJEXT)
faccessat_LDADD = $(LDADD)
faccessat_DEPENDENCIES = libtests.a
+faccessat__secontext_SOURCES = faccessat--secontext.c
+faccessat__secontext_OBJECTS = faccessat--secontext.$(OBJEXT)
+faccessat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+faccessat__secontext_full_SOURCES = faccessat--secontext_full.c
+faccessat__secontext_full_OBJECTS = \
+ faccessat--secontext_full.$(OBJEXT)
+faccessat__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
+faccessat_P_SOURCES = faccessat-P.c
+faccessat_P_OBJECTS = faccessat-P.$(OBJEXT)
+faccessat_P_LDADD = $(LDADD)
+faccessat_P_DEPENDENCIES = libtests.a
+faccessat_y_SOURCES = faccessat-y.c
+faccessat_y_OBJECTS = faccessat-y.$(OBJEXT)
+faccessat_y_LDADD = $(LDADD)
+faccessat_y_DEPENDENCIES = libtests.a
+faccessat_y__secontext_SOURCES = faccessat-y--secontext.c
+faccessat_y__secontext_OBJECTS = faccessat-y--secontext.$(OBJEXT)
+faccessat_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+faccessat_y__secontext_full_SOURCES = faccessat-y--secontext_full.c
+faccessat_y__secontext_full_OBJECTS = \
+ faccessat-y--secontext_full.$(OBJEXT)
+faccessat_y__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
+faccessat_yy_SOURCES = faccessat-yy.c
+faccessat_yy_OBJECTS = faccessat-yy.$(OBJEXT)
+faccessat_yy_LDADD = $(LDADD)
+faccessat_yy_DEPENDENCIES = libtests.a
fadvise64_SOURCES = fadvise64.c
fadvise64_OBJECTS = fadvise64.$(OBJEXT)
fadvise64_LDADD = $(LDADD)
@@ -966,6 +1045,15 @@
fanotify_mark_OBJECTS = fanotify_mark.$(OBJEXT)
fanotify_mark_LDADD = $(LDADD)
fanotify_mark_DEPENDENCIES = libtests.a
+fanotify_mark__secontext_SOURCES = fanotify_mark--secontext.c
+fanotify_mark__secontext_OBJECTS = fanotify_mark--secontext.$(OBJEXT)
+fanotify_mark__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fanotify_mark__secontext_full_SOURCES = \
+ fanotify_mark--secontext_full.c
+fanotify_mark__secontext_full_OBJECTS = \
+ fanotify_mark--secontext_full.$(OBJEXT)
+fanotify_mark__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
fanotify_mark_Xabbrev_SOURCES = fanotify_mark-Xabbrev.c
fanotify_mark_Xabbrev_OBJECTS = fanotify_mark-Xabbrev.$(OBJEXT)
fanotify_mark_Xabbrev_LDADD = $(LDADD)
@@ -986,14 +1074,32 @@
fchmod_OBJECTS = fchmod.$(OBJEXT)
fchmod_LDADD = $(LDADD)
fchmod_DEPENDENCIES = libtests.a
+fchmod__secontext_SOURCES = fchmod--secontext.c
+fchmod__secontext_OBJECTS = fchmod--secontext.$(OBJEXT)
+fchmod__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmod__secontext_full_SOURCES = fchmod--secontext_full.c
+fchmod__secontext_full_OBJECTS = fchmod--secontext_full.$(OBJEXT)
+fchmod__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchmod_y_SOURCES = fchmod-y.c
fchmod_y_OBJECTS = fchmod-y.$(OBJEXT)
fchmod_y_LDADD = $(LDADD)
fchmod_y_DEPENDENCIES = libtests.a
+fchmod_y__secontext_SOURCES = fchmod-y--secontext.c
+fchmod_y__secontext_OBJECTS = fchmod-y--secontext.$(OBJEXT)
+fchmod_y__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmod_y__secontext_full_SOURCES = fchmod-y--secontext_full.c
+fchmod_y__secontext_full_OBJECTS = fchmod-y--secontext_full.$(OBJEXT)
+fchmod_y__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchmodat_SOURCES = fchmodat.c
fchmodat_OBJECTS = fchmodat.$(OBJEXT)
fchmodat_LDADD = $(LDADD)
fchmodat_DEPENDENCIES = libtests.a
+fchmodat__secontext_SOURCES = fchmodat--secontext.c
+fchmodat__secontext_OBJECTS = fchmodat--secontext.$(OBJEXT)
+fchmodat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchmodat__secontext_full_SOURCES = fchmodat--secontext_full.c
+fchmodat__secontext_full_OBJECTS = fchmodat--secontext_full.$(OBJEXT)
+fchmodat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fchown_SOURCES = fchown.c
fchown_OBJECTS = fchown.$(OBJEXT)
fchown_LDADD = $(LDADD)
@@ -1006,6 +1112,12 @@
fchownat_OBJECTS = fchownat.$(OBJEXT)
fchownat_LDADD = $(LDADD)
fchownat_DEPENDENCIES = libtests.a
+fchownat__secontext_SOURCES = fchownat--secontext.c
+fchownat__secontext_OBJECTS = fchownat--secontext.$(OBJEXT)
+fchownat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+fchownat__secontext_full_SOURCES = fchownat--secontext_full.c
+fchownat__secontext_full_OBJECTS = fchownat--secontext_full.$(OBJEXT)
+fchownat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
fcntl_SOURCES = fcntl.c
fcntl_OBJECTS = fcntl.$(OBJEXT)
fcntl_LDADD = $(LDADD)
@@ -1035,6 +1147,14 @@
file_handle_OBJECTS = file_handle.$(OBJEXT)
file_handle_LDADD = $(LDADD)
file_handle_DEPENDENCIES = libtests.a
+file_handle__secontext_SOURCES = file_handle--secontext.c
+file_handle__secontext_OBJECTS = file_handle--secontext.$(OBJEXT)
+file_handle__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+file_handle__secontext_full_SOURCES = file_handle--secontext_full.c
+file_handle__secontext_full_OBJECTS = \
+ file_handle--secontext_full.$(OBJEXT)
+file_handle__secontext_full_DEPENDENCIES = $(LDADD) \
+ $(am__DEPENDENCIES_2)
file_ioctl_SOURCES = file_ioctl.c
file_ioctl_OBJECTS = file_ioctl.$(OBJEXT)
file_ioctl_LDADD = $(LDADD)
@@ -1886,6 +2006,12 @@
linkat_OBJECTS = linkat.$(OBJEXT)
linkat_LDADD = $(LDADD)
linkat_DEPENDENCIES = libtests.a
+linkat__secontext_SOURCES = linkat--secontext.c
+linkat__secontext_OBJECTS = linkat--secontext.$(OBJEXT)
+linkat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+linkat__secontext_full_SOURCES = linkat--secontext_full.c
+linkat__secontext_full_OBJECTS = linkat--secontext_full.$(OBJEXT)
+linkat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
list_sigaction_signum_SOURCES = list_sigaction_signum.c
list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT)
list_sigaction_signum_LDADD = $(LDADD)
@@ -2530,6 +2656,12 @@
open_OBJECTS = open.$(OBJEXT)
open_LDADD = $(LDADD)
open_DEPENDENCIES = libtests.a
+open__secontext_SOURCES = open--secontext.c
+open__secontext_OBJECTS = open--secontext.$(OBJEXT)
+open__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+open__secontext_full_SOURCES = open--secontext_full.c
+open__secontext_full_OBJECTS = open--secontext_full.$(OBJEXT)
+open__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
open_tree_SOURCES = open_tree.c
open_tree_OBJECTS = open_tree.$(OBJEXT)
open_tree_LDADD = $(LDADD)
@@ -2542,6 +2674,12 @@
openat_OBJECTS = openat.$(OBJEXT)
openat_LDADD = $(LDADD)
openat_DEPENDENCIES = libtests.a
+openat__secontext_SOURCES = openat--secontext.c
+openat__secontext_OBJECTS = openat--secontext.$(OBJEXT)
+openat__secontext_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
+openat__secontext_full_SOURCES = openat--secontext_full.c
+openat__secontext_full_OBJECTS = openat--secontext_full.$(OBJEXT)
+openat__secontext_full_DEPENDENCIES = $(LDADD) $(am__DEPENDENCIES_2)
openat2_SOURCES = openat2.c
openat2_OBJECTS = openat2.$(OBJEXT)
openat2_LDADD = $(LDADD)
@@ -4487,7 +4625,8 @@
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c accept.c \
- accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+ accept4.c access.c access--secontext.c \
+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \
aio_pgetevents.c alarm.c answer.c attach-f-p.c \
attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \
block_reset_raise_run.c block_reset_run.c bpf.c \
@@ -4495,7 +4634,8 @@
bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
- check_sigign.c chmod.c chown.c chown32.c chroot.c \
+ check_sigign.c chmod.c chmod--secontext.c \
+ chmod--secontext_full.c chown.c chown32.c chroot.c \
clock_adjtime.c clock_nanosleep.c clock_xettime.c \
clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
@@ -4509,25 +4649,35 @@
dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \
epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \
- execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
- fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
- fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
- fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
- fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
- fcntl--pidns-translation.c fcntl64.c \
- fcntl64--pidns-translation.c fdatasync.c fflush.c \
- file_handle.c file_ioctl.c filter-unavailable.c \
- filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
- flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+ execve--secontext.c execve--secontext_full.c execve-v.c \
+ execveat.c execveat--secontext.c execveat--secontext_full.c \
+ execveat-v.c faccessat.c faccessat--secontext.c \
+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \
+ faccessat-y--secontext.c faccessat-y--secontext_full.c \
+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \
+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \
+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \
+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \
+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \
+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \
+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \
+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \
+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \
+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+ file_handle.c file_handle--secontext.c \
+ file_handle--secontext_full.c file_ioctl.c \
+ filter-unavailable.c filter_seccomp-flag.c \
+ filter_seccomp-perf.c finit_module.c flock.c \
+ fork--pidns-translation.c fork-f.c fsconfig.c fsconfig-P.c \
+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \
+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \
+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \
+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \
+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \
+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \
+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \
+ getpgrp.c getpgrp--pidns-translation.c getpid.c \
getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
getresgid32.c getresuid.c getresuid32.c getrlimit.c \
getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
@@ -4578,7 +4728,8 @@
kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
keyctl-Xraw.c keyctl-Xverbose.c kill.c \
kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+ lchown32.c link.c linkat.c linkat--secontext.c \
+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \
localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
lstat64.c madvise.c maybe_switch_current_tcp.c \
maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
@@ -4629,23 +4780,25 @@
old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
- orphaned_process_group.c osf_utimes.c pause.c pc.c \
- perf_event_open.c perf_event_open_nonverbose.c \
- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ oldstat.c open.c open--secontext.c open--secontext_full.c \
+ open_tree.c open_tree-P.c openat.c openat--secontext.c \
+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \
+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \
+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \
+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \
+ osf_utimes.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c personality-Xabbrev.c personality-Xraw.c \
+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \
+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \
+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \
+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \
+ pidfd_open-yy.c pidfd_send_signal.c \
+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \
+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \
prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \
preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \
@@ -4735,7 +4888,8 @@
xetpriority.c xetpriority--pidns-translation.c xettimeofday.c \
zeroargc.c
DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c _newselect-P.c \
- accept.c accept4.c access.c acct.c add_key.c adjtimex.c aio.c \
+ accept.c accept4.c access.c access--secontext.c \
+ access--secontext_full.c acct.c add_key.c adjtimex.c aio.c \
aio_pgetevents.c alarm.c answer.c attach-f-p.c \
attach-f-p-cmd.c attach-p-cmd-cmd.c attach-p-cmd-p.c \
block_reset_raise_run.c block_reset_run.c bpf.c \
@@ -4743,7 +4897,8 @@
bpf-obj_get_info_by_fd-prog-v.c bpf-obj_get_info_by_fd-v.c \
bpf-success.c bpf-success-long-y.c bpf-success-v.c bpf-v.c \
brk.c btrfs.c caps.c caps-abbrev.c check_sigblock.c \
- check_sigign.c chmod.c chown.c chown32.c chroot.c \
+ check_sigign.c chmod.c chmod--secontext.c \
+ chmod--secontext_full.c chown.c chown32.c chroot.c \
clock_adjtime.c clock_nanosleep.c clock_xettime.c \
clone-flags.c clone3.c clone3-Xabbrev.c clone3-Xraw.c \
clone3-Xverbose.c clone3-success.c clone3-success-Xabbrev.c \
@@ -4757,25 +4912,35 @@
dup-yy.c dup2.c dup2-P.c dup2-y.c dup2-yy.c dup3.c dup3-P.c \
dup3-y.c dup3-yy.c epoll_create.c epoll_create1.c epoll_ctl.c \
epoll_pwait.c epoll_wait.c erestartsys.c eventfd.c execve.c \
- execve-v.c execveat.c execveat-v.c faccessat.c fadvise64.c \
- fadvise64_64.c fallocate.c fanotify_init.c fanotify_mark.c \
- fanotify_mark-Xabbrev.c fanotify_mark-Xraw.c \
- fanotify_mark-Xverbose.c fchdir.c fchmod.c fchmod-y.c \
- fchmodat.c fchown.c fchown32.c fchownat.c fcntl.c \
- fcntl--pidns-translation.c fcntl64.c \
- fcntl64--pidns-translation.c fdatasync.c fflush.c \
- file_handle.c file_ioctl.c filter-unavailable.c \
- filter_seccomp-flag.c filter_seccomp-perf.c finit_module.c \
- flock.c fork--pidns-translation.c fork-f.c fsconfig.c \
- fsconfig-P.c fsmount.c fsopen.c fspick.c fspick-P.c fstat.c \
- fstat-Xabbrev.c fstat-Xraw.c fstat-Xverbose.c fstat64.c \
- fstat64-Xabbrev.c fstat64-Xraw.c fstat64-Xverbose.c \
- fstatat64.c fstatfs.c fstatfs64.c fsync.c fsync-y.c \
- ftruncate.c ftruncate64.c futex.c futimesat.c get_mempolicy.c \
- get_process_reaper.c getcpu.c getcwd.c getdents.c getdents-v.c \
- getdents64.c getdents64-v.c getegid.c getegid32.c geteuid.c \
- geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
- getpeername.c getpgrp.c getpgrp--pidns-translation.c getpid.c \
+ execve--secontext.c execve--secontext_full.c execve-v.c \
+ execveat.c execveat--secontext.c execveat--secontext_full.c \
+ execveat-v.c faccessat.c faccessat--secontext.c \
+ faccessat--secontext_full.c faccessat-P.c faccessat-y.c \
+ faccessat-y--secontext.c faccessat-y--secontext_full.c \
+ faccessat-yy.c fadvise64.c fadvise64_64.c fallocate.c \
+ fanotify_init.c fanotify_mark.c fanotify_mark--secontext.c \
+ fanotify_mark--secontext_full.c fanotify_mark-Xabbrev.c \
+ fanotify_mark-Xraw.c fanotify_mark-Xverbose.c fchdir.c \
+ fchmod.c fchmod--secontext.c fchmod--secontext_full.c \
+ fchmod-y.c fchmod-y--secontext.c fchmod-y--secontext_full.c \
+ fchmodat.c fchmodat--secontext.c fchmodat--secontext_full.c \
+ fchown.c fchown32.c fchownat.c fchownat--secontext.c \
+ fchownat--secontext_full.c fcntl.c fcntl--pidns-translation.c \
+ fcntl64.c fcntl64--pidns-translation.c fdatasync.c fflush.c \
+ file_handle.c file_handle--secontext.c \
+ file_handle--secontext_full.c file_ioctl.c \
+ filter-unavailable.c filter_seccomp-flag.c \
+ filter_seccomp-perf.c finit_module.c flock.c \
+ fork--pidns-translation.c fork-f.c fsconfig.c fsconfig-P.c \
+ fsmount.c fsopen.c fspick.c fspick-P.c fstat.c fstat-Xabbrev.c \
+ fstat-Xraw.c fstat-Xverbose.c fstat64.c fstat64-Xabbrev.c \
+ fstat64-Xraw.c fstat64-Xverbose.c fstatat64.c fstatfs.c \
+ fstatfs64.c fsync.c fsync-y.c ftruncate.c ftruncate64.c \
+ futex.c futimesat.c get_mempolicy.c get_process_reaper.c \
+ getcpu.c getcwd.c getdents.c getdents-v.c getdents64.c \
+ getdents64-v.c getegid.c getegid32.c geteuid.c geteuid32.c \
+ getgid.c getgid32.c getgroups.c getgroups32.c getpeername.c \
+ getpgrp.c getpgrp--pidns-translation.c getpid.c \
getpid--pidns-translation.c getppid.c getrandom.c getresgid.c \
getresgid32.c getresuid.c getresuid32.c getrlimit.c \
getrusage.c getsid.c getsid--pidns-translation.c getsockname.c \
@@ -4826,7 +4991,8 @@
kexec_file_load.c kexec_load.c keyctl.c keyctl-Xabbrev.c \
keyctl-Xraw.c keyctl-Xverbose.c kill.c \
kill--pidns-translation.c kill_child.c ksysent.c lchown.c \
- lchown32.c link.c linkat.c list_sigaction_signum.c llseek.c \
+ lchown32.c link.c linkat.c linkat--secontext.c \
+ linkat--secontext_full.c list_sigaction_signum.c llseek.c \
localtime.c lookup_dcookie.c looping_threads.c lseek.c lstat.c \
lstat64.c madvise.c maybe_switch_current_tcp.c \
maybe_switch_current_tcp--quiet-thread-execve.c mbind.c \
@@ -4877,23 +5043,25 @@
old_mmap-Xabbrev.c old_mmap-Xraw.c old_mmap-Xverbose.c \
old_mmap-v-none.c oldfstat.c oldlstat.c oldselect.c \
oldselect-P.c oldselect-efault.c oldselect-efault-P.c \
- oldstat.c open.c open_tree.c open_tree-P.c openat.c openat2.c \
- openat2-Xabbrev.c openat2-Xraw.c openat2-Xverbose.c \
- openat2-v.c openat2-v-y.c openat2-v-y-Xabbrev.c \
- openat2-v-y-Xraw.c openat2-v-y-Xverbose.c openat2-y.c \
- orphaned_process_group.c osf_utimes.c pause.c pc.c \
- perf_event_open.c perf_event_open_nonverbose.c \
- perf_event_open_unabbrev.c personality.c personality-Xabbrev.c \
- personality-Xraw.c personality-Xverbose.c pidfd_getfd.c \
- pidfd_getfd-y.c pidfd_getfd-yy.c pidfd_open.c \
- pidfd_open--decode-fd-path.c pidfd_open--decode-fd-pidfd.c \
- pidfd_open--decode-fd-socket.c pidfd_open--pidns-translation.c \
- pidfd_open-P.c pidfd_open-y.c pidfd_open-yy.c \
- pidfd_send_signal.c pidfd_send_signal--pidns-translation.c \
- pidns-cache.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c poll-P.c ppoll.c ppoll-P.c ppoll-v.c \
- prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
- prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ oldstat.c open.c open--secontext.c open--secontext_full.c \
+ open_tree.c open_tree-P.c openat.c openat--secontext.c \
+ openat--secontext_full.c openat2.c openat2-Xabbrev.c \
+ openat2-Xraw.c openat2-Xverbose.c openat2-v.c openat2-v-y.c \
+ openat2-v-y-Xabbrev.c openat2-v-y-Xraw.c \
+ openat2-v-y-Xverbose.c openat2-y.c orphaned_process_group.c \
+ osf_utimes.c pause.c pc.c perf_event_open.c \
+ perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
+ personality.c personality-Xabbrev.c personality-Xraw.c \
+ personality-Xverbose.c pidfd_getfd.c pidfd_getfd-y.c \
+ pidfd_getfd-yy.c pidfd_open.c pidfd_open--decode-fd-path.c \
+ pidfd_open--decode-fd-pidfd.c pidfd_open--decode-fd-socket.c \
+ pidfd_open--pidns-translation.c pidfd_open-P.c pidfd_open-y.c \
+ pidfd_open-yy.c pidfd_send_signal.c \
+ pidfd_send_signal--pidns-translation.c pidns-cache.c pipe.c \
+ pipe2.c pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c \
+ poll-P.c ppoll.c ppoll-P.c ppoll-v.c prctl-arg2-intptr.c \
+ prctl-dumpable.c prctl-name.c prctl-no-args.c \
+ prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-spec-inject.c \
prctl-tid_address.c prctl-tsc.c pread64-pwrite64.c preadv.c \
preadv-pwritev.c preadv2-pwritev2.c print_maxfd.c \
@@ -5194,7 +5362,7 @@
bases=`echo $$bases`
RECHECK_LOGS = $(TEST_LOGS)
AM_RECURSIVE_TARGETS = check recheck
-@ENABLE_STACKTRACE_TRUE@am__EXEEXT_2 = strace-k.test strace-k-p.test \
+@ENABLE_STACKTRACE_TRUE@am__EXEEXT_3 = strace-k.test strace-k-p.test \
@ENABLE_STACKTRACE_TRUE@ $(am__append_1)
TEST_SUITE_LOG = test-suite.log
TEST_EXTENSIONS = @EXEEXT@ .test
@@ -5216,7 +5384,8 @@
esac
am__DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
$(srcdir)/gen_tests.am $(srcdir)/pure_executables.am \
- $(top_srcdir)/depcomp $(top_srcdir)/test-driver COPYING
+ $(srcdir)/secontext.am $(top_srcdir)/depcomp \
+ $(top_srcdir)/test-driver COPYING
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -5357,6 +5526,9 @@
libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
libiberty_LDFLAGS = @libiberty_LDFLAGS@
libiberty_LIBS = @libiberty_LIBS@
+libselinux_CPPFLAGS = @libselinux_CPPFLAGS@
+libselinux_LDFLAGS = @libselinux_LDFLAGS@
+libselinux_LIBS = @libselinux_LIBS@
libunwind_CPPFLAGS = @libunwind_CPPFLAGS@
libunwind_LDFLAGS = @libunwind_LDFLAGS@
libunwind_LIBS = @libunwind_LIBS@
@@ -5400,6 +5572,8 @@
-DTESTS_SIZEOF_LONG=$(SIZEOF_LONG)
AM_LDFLAGS = $(ARCH_MFLAGS)
+@HAVE_MX32_SELINUX_RUNTIME_FALSE@libselinux_LDADD =
+@HAVE_MX32_SELINUX_RUNTIME_TRUE@libselinux_LDADD = $(libselinux_LIBS)
libtests_a_SOURCES = \
create_nl_socket.c \
create_tmpfile.c \
@@ -5426,6 +5600,8 @@
printxval-Xabbrev.c \
printxval-Xraw.c \
printxval-Xverbose.c \
+ secontext.c \
+ secontext.h \
signal2name.c \
skip_unavailable.c \
sprintrc.c \
@@ -5505,6 +5681,9 @@
execve \
execveat \
faccessat \
+ faccessat-P \
+ faccessat-y \
+ faccessat-yy \
fadvise64 \
fadvise64_64 \
fallocate \
@@ -6077,6 +6256,69 @@
xettimeofday \
#
+secontext_EXECUTABLES = \
+ access--secontext \
+ access--secontext_full \
+ chmod--secontext \
+ chmod--secontext_full \
+ execve--secontext \
+ execve--secontext_full \
+ execveat--secontext \
+ execveat--secontext_full \
+ faccessat--secontext \
+ faccessat--secontext_full \
+ faccessat-y--secontext \
+ faccessat-y--secontext_full \
+ fanotify_mark--secontext \
+ fanotify_mark--secontext_full \
+ fchmod--secontext \
+ fchmod--secontext_full \
+ fchmod-y--secontext \
+ fchmod-y--secontext_full \
+ fchmodat--secontext \
+ fchmodat--secontext_full \
+ fchownat--secontext \
+ fchownat--secontext_full \
+ file_handle--secontext \
+ file_handle--secontext_full \
+ linkat--secontext \
+ linkat--secontext_full \
+ open--secontext \
+ open--secontext_full \
+ openat--secontext \
+ openat--secontext_full \
+ #
+
+access__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+access__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+chmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+chmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+execve__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+execve__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+execveat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+execveat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+faccessat_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fanotify_mark__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fanotify_mark__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod_y__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmod_y__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmodat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchmodat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+fchownat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+fchownat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+file_handle__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+file_handle__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+linkat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+linkat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+open__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+open__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
+openat__secontext_LDADD = $(LDADD) $(libselinux_LDADD)
+openat__secontext_full_LDADD = $(LDADD) $(libselinux_LDADD)
attach_f_p_LDADD = -lpthread $(LDADD)
count_f_LDADD = -lpthread $(LDADD)
delay_LDADD = $(clock_LIBS) $(LDADD)
@@ -6129,14 +6371,15 @@
# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
GEN_TESTS = _newselect.gen.test _newselect-P.gen.test accept.gen.test \
- accept4.gen.test access.gen.test acct.gen.test \
- add_key.gen.test adjtimex.gen.test aio.gen.test \
- aio_pgetevents.gen.test alarm.gen.test bpf.gen.test \
- bpf-obj_get_info_by_fd.gen.test \
+ accept4.gen.test access.gen.test access--secontext.gen.test \
+ access--secontext_full.gen.test acct.gen.test add_key.gen.test \
+ adjtimex.gen.test aio.gen.test aio_pgetevents.gen.test \
+ alarm.gen.test bpf.gen.test bpf-obj_get_info_by_fd.gen.test \
bpf-obj_get_info_by_fd-prog.gen.test \
bpf-obj_get_info_by_fd-prog-v.gen.test \
bpf-obj_get_info_by_fd-v.gen.test bpf-v.gen.test \
- btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test \
+ btrfs.gen.test chmod.gen.test chmod--secontext.gen.test \
+ chmod--secontext_full.gen.test chown.gen.test chown32.gen.test \
chroot.gen.test clock.gen.test clock_adjtime.gen.test \
clock_nanosleep.gen.test clock_xettime.gen.test \
clone3.gen.test clone3-Xabbrev.gen.test clone3-Xraw.gen.test \
@@ -6155,21 +6398,36 @@
dup3-P.gen.test dup3-y.gen.test dup3-yy.gen.test \
epoll_create.gen.test epoll_create1.gen.test \
epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test \
- erestartsys.gen.test execveat.gen.test execveat-v.gen.test \
- faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test \
+ erestartsys.gen.test execve--secontext.gen.test \
+ execve--secontext_full.gen.test execveat.gen.test \
+ execveat--secontext.gen.test execveat--secontext_full.gen.test \
+ execveat-v.gen.test faccessat--secontext.gen.test \
+ faccessat--secontext_full.gen.test faccessat-P.gen.test \
+ faccessat-y.gen.test faccessat-y--secontext.gen.test \
+ faccessat-y--secontext_full.gen.test faccessat-yy.gen.test \
+ fadvise64_64.gen.test fallocate.gen.test \
fanotify_init.gen.test fanotify_mark.gen.test \
+ fanotify_mark--secontext.gen.test \
+ fanotify_mark--secontext_full.gen.test \
fanotify_mark-Xabbrev.gen.test fanotify_mark-Xraw.gen.test \
fanotify_mark-Xverbose.gen.test fchdir.gen.test \
- fchmod.gen.test fchmod-y.gen.test fchmodat.gen.test \
- fchown.gen.test fchown32.gen.test fchownat.gen.test \
+ fchmod.gen.test fchmod--secontext.gen.test \
+ fchmod--secontext_full.gen.test fchmod-y.gen.test \
+ fchmod-y--secontext.gen.test fchmod-y--secontext_full.gen.test \
+ fchmodat.gen.test fchmodat--secontext.gen.test \
+ fchmodat--secontext_full.gen.test fchown.gen.test \
+ fchown32.gen.test fchownat.gen.test \
+ fchownat--secontext.gen.test fchownat--secontext_full.gen.test \
fcntl.gen.test fcntl--pidns-translation.gen.test \
fcntl64.gen.test fcntl64--pidns-translation.gen.test \
fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test \
- filter_seccomp.gen.test filter_seccomp-flag.gen.test \
- finit_module.gen.test flock.gen.test fork-f.gen.test \
- fsconfig.gen.test fsconfig-P.gen.test fsmount.gen.test \
- fsopen.gen.test fspick.gen.test fspick-P.gen.test \
- fstat.gen.test fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
+ file_handle--secontext.gen.test \
+ file_handle--secontext_full.gen.test filter_seccomp.gen.test \
+ filter_seccomp-flag.gen.test finit_module.gen.test \
+ flock.gen.test fork-f.gen.test fsconfig.gen.test \
+ fsconfig-P.gen.test fsmount.gen.test fsopen.gen.test \
+ fspick.gen.test fspick-P.gen.test fstat.gen.test \
+ fstat-Xabbrev.gen.test fstat-Xraw.gen.test \
fstat-Xverbose.gen.test fstat64.gen.test \
fstat64-Xabbrev.gen.test fstat64-Xraw.gen.test \
fstat64-Xverbose.gen.test fstatat64.gen.test fstatfs.gen.test \
@@ -6259,8 +6517,9 @@
keyctl-Xverbose.gen.test kill.gen.test \
kill--pidns-translation.gen.test ksysent.gen.test \
lchown.gen.test lchown32.gen.test link.gen.test \
- linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
- lstat64.gen.test madvise.gen.test \
+ linkat.gen.test linkat--secontext.gen.test \
+ linkat--secontext_full.gen.test lookup_dcookie.gen.test \
+ lstat.gen.test lstat64.gen.test madvise.gen.test \
maybe_switch_current_tcp.gen.test \
maybe_switch_current_tcp--quiet-thread-execve.gen.test \
mbind.gen.test mbind-Xabbrev.gen.test mbind-Xraw.gen.test \
@@ -6328,14 +6587,17 @@
old_mmap-v-none.gen.test oldfstat.gen.test oldlstat.gen.test \
oldselect.gen.test oldselect-P.gen.test \
oldselect-efault.gen.test oldselect-efault-P.gen.test \
- oldstat.gen.test open.gen.test open_tree.gen.test \
- open_tree-P.gen.test openat.gen.test openat2.gen.test \
- openat2-Xabbrev.gen.test openat2-Xraw.gen.test \
- openat2-Xverbose.gen.test openat2-v.gen.test \
- openat2-v-y.gen.test openat2-v-y-Xabbrev.gen.test \
- openat2-v-y-Xraw.gen.test openat2-v-y-Xverbose.gen.test \
- openat2-y.gen.test orphaned_process_group.gen.test \
- osf_utimes.gen.test pause.gen.test perf_event_open.gen.test \
+ oldstat.gen.test open.gen.test open--secontext.gen.test \
+ open--secontext_full.gen.test open_tree.gen.test \
+ open_tree-P.gen.test openat.gen.test \
+ openat--secontext.gen.test openat--secontext_full.gen.test \
+ openat2.gen.test openat2-Xabbrev.gen.test \
+ openat2-Xraw.gen.test openat2-Xverbose.gen.test \
+ openat2-v.gen.test openat2-v-y.gen.test \
+ openat2-v-y-Xabbrev.gen.test openat2-v-y-Xraw.gen.test \
+ openat2-v-y-Xverbose.gen.test openat2-y.gen.test \
+ orphaned_process_group.gen.test osf_utimes.gen.test \
+ pause.gen.test perf_event_open.gen.test \
perf_event_open_nonverbose.gen.test \
perf_event_open_unabbrev.gen.test personality-Xabbrev.gen.test \
personality-Xraw.gen.test personality-Xverbose.gen.test \
@@ -6806,7 +7068,7 @@
.SUFFIXES:
.SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -6826,7 +7088,7 @@
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
-$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty):
+$(srcdir)/pure_executables.am $(srcdir)/secontext.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -6868,6 +7130,14 @@
@rm -f access$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(access_OBJECTS) $(access_LDADD) $(LIBS)
+access--secontext$(EXEEXT): $(access__secontext_OBJECTS) $(access__secontext_DEPENDENCIES) $(EXTRA_access__secontext_DEPENDENCIES)
+ @rm -f access--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access__secontext_OBJECTS) $(access__secontext_LDADD) $(LIBS)
+
+access--secontext_full$(EXEEXT): $(access__secontext_full_OBJECTS) $(access__secontext_full_DEPENDENCIES) $(EXTRA_access__secontext_full_DEPENDENCIES)
+ @rm -f access--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(access__secontext_full_OBJECTS) $(access__secontext_full_LDADD) $(LIBS)
+
acct$(EXEEXT): $(acct_OBJECTS) $(acct_DEPENDENCIES) $(EXTRA_acct_DEPENDENCIES)
@rm -f acct$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(acct_OBJECTS) $(acct_LDADD) $(LIBS)
@@ -6984,6 +7254,14 @@
@rm -f chmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
+chmod--secontext$(EXEEXT): $(chmod__secontext_OBJECTS) $(chmod__secontext_DEPENDENCIES) $(EXTRA_chmod__secontext_DEPENDENCIES)
+ @rm -f chmod--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_OBJECTS) $(chmod__secontext_LDADD) $(LIBS)
+
+chmod--secontext_full$(EXEEXT): $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_DEPENDENCIES) $(EXTRA_chmod__secontext_full_DEPENDENCIES)
+ @rm -f chmod--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(chmod__secontext_full_OBJECTS) $(chmod__secontext_full_LDADD) $(LIBS)
+
chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) $(EXTRA_chown_DEPENDENCIES)
@rm -f chown$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chown_OBJECTS) $(chown_LDADD) $(LIBS)
@@ -7196,6 +7474,14 @@
@rm -f execve$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execve_OBJECTS) $(execve_LDADD) $(LIBS)
+execve--secontext$(EXEEXT): $(execve__secontext_OBJECTS) $(execve__secontext_DEPENDENCIES) $(EXTRA_execve__secontext_DEPENDENCIES)
+ @rm -f execve--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve__secontext_OBJECTS) $(execve__secontext_LDADD) $(LIBS)
+
+execve--secontext_full$(EXEEXT): $(execve__secontext_full_OBJECTS) $(execve__secontext_full_DEPENDENCIES) $(EXTRA_execve__secontext_full_DEPENDENCIES)
+ @rm -f execve--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execve__secontext_full_OBJECTS) $(execve__secontext_full_LDADD) $(LIBS)
+
execve-v$(EXEEXT): $(execve_v_OBJECTS) $(execve_v_DEPENDENCIES) $(EXTRA_execve_v_DEPENDENCIES)
@rm -f execve-v$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execve_v_OBJECTS) $(execve_v_LDADD) $(LIBS)
@@ -7204,6 +7490,14 @@
@rm -f execveat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execveat_OBJECTS) $(execveat_LDADD) $(LIBS)
+execveat--secontext$(EXEEXT): $(execveat__secontext_OBJECTS) $(execveat__secontext_DEPENDENCIES) $(EXTRA_execveat__secontext_DEPENDENCIES)
+ @rm -f execveat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_OBJECTS) $(execveat__secontext_LDADD) $(LIBS)
+
+execveat--secontext_full$(EXEEXT): $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_DEPENDENCIES) $(EXTRA_execveat__secontext_full_DEPENDENCIES)
+ @rm -f execveat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(execveat__secontext_full_OBJECTS) $(execveat__secontext_full_LDADD) $(LIBS)
+
execveat-v$(EXEEXT): $(execveat_v_OBJECTS) $(execveat_v_DEPENDENCIES) $(EXTRA_execveat_v_DEPENDENCIES)
@rm -f execveat-v$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(execveat_v_OBJECTS) $(execveat_v_LDADD) $(LIBS)
@@ -7212,6 +7506,34 @@
@rm -f faccessat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(faccessat_OBJECTS) $(faccessat_LDADD) $(LIBS)
+faccessat--secontext$(EXEEXT): $(faccessat__secontext_OBJECTS) $(faccessat__secontext_DEPENDENCIES) $(EXTRA_faccessat__secontext_DEPENDENCIES)
+ @rm -f faccessat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_OBJECTS) $(faccessat__secontext_LDADD) $(LIBS)
+
+faccessat--secontext_full$(EXEEXT): $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_DEPENDENCIES) $(EXTRA_faccessat__secontext_full_DEPENDENCIES)
+ @rm -f faccessat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat__secontext_full_OBJECTS) $(faccessat__secontext_full_LDADD) $(LIBS)
+
+faccessat-P$(EXEEXT): $(faccessat_P_OBJECTS) $(faccessat_P_DEPENDENCIES) $(EXTRA_faccessat_P_DEPENDENCIES)
+ @rm -f faccessat-P$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_P_OBJECTS) $(faccessat_P_LDADD) $(LIBS)
+
+faccessat-y$(EXEEXT): $(faccessat_y_OBJECTS) $(faccessat_y_DEPENDENCIES) $(EXTRA_faccessat_y_DEPENDENCIES)
+ @rm -f faccessat-y$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y_OBJECTS) $(faccessat_y_LDADD) $(LIBS)
+
+faccessat-y--secontext$(EXEEXT): $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_DEPENDENCIES)
+ @rm -f faccessat-y--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_OBJECTS) $(faccessat_y__secontext_LDADD) $(LIBS)
+
+faccessat-y--secontext_full$(EXEEXT): $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_DEPENDENCIES) $(EXTRA_faccessat_y__secontext_full_DEPENDENCIES)
+ @rm -f faccessat-y--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_y__secontext_full_OBJECTS) $(faccessat_y__secontext_full_LDADD) $(LIBS)
+
+faccessat-yy$(EXEEXT): $(faccessat_yy_OBJECTS) $(faccessat_yy_DEPENDENCIES) $(EXTRA_faccessat_yy_DEPENDENCIES)
+ @rm -f faccessat-yy$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(faccessat_yy_OBJECTS) $(faccessat_yy_LDADD) $(LIBS)
+
fadvise64$(EXEEXT): $(fadvise64_OBJECTS) $(fadvise64_DEPENDENCIES) $(EXTRA_fadvise64_DEPENDENCIES)
@rm -f fadvise64$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fadvise64_OBJECTS) $(fadvise64_LDADD) $(LIBS)
@@ -7232,6 +7554,14 @@
@rm -f fanotify_mark$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fanotify_mark_OBJECTS) $(fanotify_mark_LDADD) $(LIBS)
+fanotify_mark--secontext$(EXEEXT): $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_DEPENDENCIES)
+ @rm -f fanotify_mark--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_OBJECTS) $(fanotify_mark__secontext_LDADD) $(LIBS)
+
+fanotify_mark--secontext_full$(EXEEXT): $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_DEPENDENCIES) $(EXTRA_fanotify_mark__secontext_full_DEPENDENCIES)
+ @rm -f fanotify_mark--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fanotify_mark__secontext_full_OBJECTS) $(fanotify_mark__secontext_full_LDADD) $(LIBS)
+
fanotify_mark-Xabbrev$(EXEEXT): $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_DEPENDENCIES) $(EXTRA_fanotify_mark_Xabbrev_DEPENDENCIES)
@rm -f fanotify_mark-Xabbrev$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fanotify_mark_Xabbrev_OBJECTS) $(fanotify_mark_Xabbrev_LDADD) $(LIBS)
@@ -7252,14 +7582,38 @@
@rm -f fchmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmod_OBJECTS) $(fchmod_LDADD) $(LIBS)
+fchmod--secontext$(EXEEXT): $(fchmod__secontext_OBJECTS) $(fchmod__secontext_DEPENDENCIES) $(EXTRA_fchmod__secontext_DEPENDENCIES)
+ @rm -f fchmod--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_OBJECTS) $(fchmod__secontext_LDADD) $(LIBS)
+
+fchmod--secontext_full$(EXEEXT): $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_DEPENDENCIES) $(EXTRA_fchmod__secontext_full_DEPENDENCIES)
+ @rm -f fchmod--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod__secontext_full_OBJECTS) $(fchmod__secontext_full_LDADD) $(LIBS)
+
fchmod-y$(EXEEXT): $(fchmod_y_OBJECTS) $(fchmod_y_DEPENDENCIES) $(EXTRA_fchmod_y_DEPENDENCIES)
@rm -f fchmod-y$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmod_y_OBJECTS) $(fchmod_y_LDADD) $(LIBS)
+fchmod-y--secontext$(EXEEXT): $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_DEPENDENCIES)
+ @rm -f fchmod-y--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_OBJECTS) $(fchmod_y__secontext_LDADD) $(LIBS)
+
+fchmod-y--secontext_full$(EXEEXT): $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_DEPENDENCIES) $(EXTRA_fchmod_y__secontext_full_DEPENDENCIES)
+ @rm -f fchmod-y--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmod_y__secontext_full_OBJECTS) $(fchmod_y__secontext_full_LDADD) $(LIBS)
+
fchmodat$(EXEEXT): $(fchmodat_OBJECTS) $(fchmodat_DEPENDENCIES) $(EXTRA_fchmodat_DEPENDENCIES)
@rm -f fchmodat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchmodat_OBJECTS) $(fchmodat_LDADD) $(LIBS)
+fchmodat--secontext$(EXEEXT): $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_DEPENDENCIES) $(EXTRA_fchmodat__secontext_DEPENDENCIES)
+ @rm -f fchmodat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_OBJECTS) $(fchmodat__secontext_LDADD) $(LIBS)
+
+fchmodat--secontext_full$(EXEEXT): $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_DEPENDENCIES) $(EXTRA_fchmodat__secontext_full_DEPENDENCIES)
+ @rm -f fchmodat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchmodat__secontext_full_OBJECTS) $(fchmodat__secontext_full_LDADD) $(LIBS)
+
fchown$(EXEEXT): $(fchown_OBJECTS) $(fchown_DEPENDENCIES) $(EXTRA_fchown_DEPENDENCIES)
@rm -f fchown$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchown_OBJECTS) $(fchown_LDADD) $(LIBS)
@@ -7272,6 +7626,14 @@
@rm -f fchownat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fchownat_OBJECTS) $(fchownat_LDADD) $(LIBS)
+fchownat--secontext$(EXEEXT): $(fchownat__secontext_OBJECTS) $(fchownat__secontext_DEPENDENCIES) $(EXTRA_fchownat__secontext_DEPENDENCIES)
+ @rm -f fchownat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_OBJECTS) $(fchownat__secontext_LDADD) $(LIBS)
+
+fchownat--secontext_full$(EXEEXT): $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_DEPENDENCIES) $(EXTRA_fchownat__secontext_full_DEPENDENCIES)
+ @rm -f fchownat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(fchownat__secontext_full_OBJECTS) $(fchownat__secontext_full_LDADD) $(LIBS)
+
fcntl$(EXEEXT): $(fcntl_OBJECTS) $(fcntl_DEPENDENCIES) $(EXTRA_fcntl_DEPENDENCIES)
@rm -f fcntl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(fcntl_OBJECTS) $(fcntl_LDADD) $(LIBS)
@@ -7300,6 +7662,14 @@
@rm -f file_handle$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(file_handle_OBJECTS) $(file_handle_LDADD) $(LIBS)
+file_handle--secontext$(EXEEXT): $(file_handle__secontext_OBJECTS) $(file_handle__secontext_DEPENDENCIES) $(EXTRA_file_handle__secontext_DEPENDENCIES)
+ @rm -f file_handle--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_OBJECTS) $(file_handle__secontext_LDADD) $(LIBS)
+
+file_handle--secontext_full$(EXEEXT): $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_DEPENDENCIES) $(EXTRA_file_handle__secontext_full_DEPENDENCIES)
+ @rm -f file_handle--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(file_handle__secontext_full_OBJECTS) $(file_handle__secontext_full_LDADD) $(LIBS)
+
file_ioctl$(EXEEXT): $(file_ioctl_OBJECTS) $(file_ioctl_DEPENDENCIES) $(EXTRA_file_ioctl_DEPENDENCIES)
@rm -f file_ioctl$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(file_ioctl_OBJECTS) $(file_ioctl_LDADD) $(LIBS)
@@ -8124,6 +8494,14 @@
@rm -f linkat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+linkat--secontext$(EXEEXT): $(linkat__secontext_OBJECTS) $(linkat__secontext_DEPENDENCIES) $(EXTRA_linkat__secontext_DEPENDENCIES)
+ @rm -f linkat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_OBJECTS) $(linkat__secontext_LDADD) $(LIBS)
+
+linkat--secontext_full$(EXEEXT): $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_DEPENDENCIES) $(EXTRA_linkat__secontext_full_DEPENDENCIES)
+ @rm -f linkat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(linkat__secontext_full_OBJECTS) $(linkat__secontext_full_LDADD) $(LIBS)
+
list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES)
@rm -f list_sigaction_signum$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS)
@@ -8756,6 +9134,14 @@
@rm -f open$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(open_OBJECTS) $(open_LDADD) $(LIBS)
+open--secontext$(EXEEXT): $(open__secontext_OBJECTS) $(open__secontext_DEPENDENCIES) $(EXTRA_open__secontext_DEPENDENCIES)
+ @rm -f open--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open__secontext_OBJECTS) $(open__secontext_LDADD) $(LIBS)
+
+open--secontext_full$(EXEEXT): $(open__secontext_full_OBJECTS) $(open__secontext_full_DEPENDENCIES) $(EXTRA_open__secontext_full_DEPENDENCIES)
+ @rm -f open--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(open__secontext_full_OBJECTS) $(open__secontext_full_LDADD) $(LIBS)
+
open_tree$(EXEEXT): $(open_tree_OBJECTS) $(open_tree_DEPENDENCIES) $(EXTRA_open_tree_DEPENDENCIES)
@rm -f open_tree$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(open_tree_OBJECTS) $(open_tree_LDADD) $(LIBS)
@@ -8768,6 +9154,14 @@
@rm -f openat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
+openat--secontext$(EXEEXT): $(openat__secontext_OBJECTS) $(openat__secontext_DEPENDENCIES) $(EXTRA_openat__secontext_DEPENDENCIES)
+ @rm -f openat--secontext$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat__secontext_OBJECTS) $(openat__secontext_LDADD) $(LIBS)
+
+openat--secontext_full$(EXEEXT): $(openat__secontext_full_OBJECTS) $(openat__secontext_full_DEPENDENCIES) $(EXTRA_openat__secontext_full_DEPENDENCIES)
+ @rm -f openat--secontext_full$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(openat__secontext_full_OBJECTS) $(openat__secontext_full_LDADD) $(LIBS)
+
openat2$(EXEEXT): $(openat2_OBJECTS) $(openat2_DEPENDENCIES) $(EXTRA_openat2_DEPENDENCIES)
@rm -f openat2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(openat2_OBJECTS) $(openat2_LDADD) $(LIBS)
@@ -10094,6 +10488,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_newselect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/accept4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/acct.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add_key.Po@am__quote@ # am--include-marker
@@ -10123,6 +10519,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@ # am--include-marker
@@ -10176,25 +10574,46 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/epoll_wait.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/erestartsys.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventfd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve-v.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat-v.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/execveat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-P.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-y.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat-yy.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faccessat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fadvise64_64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fallocate.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_init.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xraw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark-Xverbose.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fanotify_mark.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchdir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod--secontext_full.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod-y.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmod.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchmodat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchown32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fchownat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl--pidns-translation.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker
@@ -10202,6 +10621,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl64.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdatasync.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fflush.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_handle.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_ioctl.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-unavailable.Po@am__quote@ # am--include-marker
@@ -10431,6 +10852,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xraw.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval-Xverbose.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-secontext.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@ # am--include-marker
@@ -10443,6 +10865,8 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-xmalloc_for_tests.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@ # am--include-marker
@@ -10601,9 +11025,13 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect-efault.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldselect.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree-P.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open_tree.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat--secontext_full.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xabbrev.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat2-Xraw.Po@am__quote@ # am--include-marker
@@ -11300,6 +11728,20 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-printxval-Xverbose.obj `if test -f 'printxval-Xverbose.c'; then $(CYGPATH_W) 'printxval-Xverbose.c'; else $(CYGPATH_W) '$(srcdir)/printxval-Xverbose.c'; fi`
+libtests_a-secontext.o: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.o -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-secontext.o `test -f 'secontext.c' || echo '$(srcdir)/'`secontext.c
+
+libtests_a-secontext.obj: secontext.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-secontext.obj -MD -MP -MF $(DEPDIR)/libtests_a-secontext.Tpo -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-secontext.Tpo $(DEPDIR)/libtests_a-secontext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secontext.c' object='libtests_a-secontext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-secontext.obj `if test -f 'secontext.c'; then $(CYGPATH_W) 'secontext.c'; else $(CYGPATH_W) '$(srcdir)/secontext.c'; fi`
+
libtests_a-signal2name.o: signal2name.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-signal2name.o -MD -MP -MF $(DEPDIR)/libtests_a-signal2name.Tpo -c -o libtests_a-signal2name.o `test -f 'signal2name.c' || echo '$(srcdir)/'`signal2name.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-signal2name.Tpo $(DEPDIR)/libtests_a-signal2name.Po
@@ -13841,6 +14283,12 @@
$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/access--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/access--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -13883,6 +14331,12 @@
$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/chmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14024,13 +14478,43 @@
$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/execve--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execve--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/execveat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
-$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+$(srcdir)/faccessat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-P.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat-yy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
@@ -14045,6 +14529,12 @@
$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fanotify_mark--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fanotify_mark-Xabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14060,12 +14550,30 @@
$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmod--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchmod-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmod-y--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod-y--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchmodat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14075,6 +14583,12 @@
$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/fchownat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14096,6 +14610,12 @@
$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/file_handle--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/filter_seccomp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -14690,6 +15210,12 @@
$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/linkat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -15107,6 +15633,12 @@
$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/open--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/open--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/open_tree.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -15116,6 +15648,12 @@
$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/openat--secontext.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/openat--secontext_full.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/openat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
Index: strace-5.7/tests-m32/access--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/access--secontext.c 2021-08-24 21:08:43.293245705 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "access.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/chmod--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/chmod--secontext.c 2021-08-24 21:08:43.293245705 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "chmod.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/execve--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/execve--secontext.c 2021-08-24 21:08:43.293245705 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "execve.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/execveat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/execveat--secontext.c 2021-08-24 21:08:43.293245705 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "execveat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/faccessat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/faccessat--secontext.c 2021-08-24 21:08:43.293245705 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "faccessat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/faccessat-y--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/faccessat-y--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "faccessat-y.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/fanotify_mark--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fanotify_mark--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fanotify_mark.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/fchmod--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchmod--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmod.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/fchmod-y--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchmod-y--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmod-y.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/fchmodat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchmodat--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmodat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/fchownat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchownat--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchownat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/file_handle--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/file_handle--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "file_handle.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/linkat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/linkat--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "linkat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/open--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/open--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "open.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/openat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/openat--secontext.c 2021-08-24 21:08:43.294245697 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_M32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "openat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_M32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/access--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/access--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "access.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/chmod--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/chmod--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "chmod.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/execve--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/execve--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "execve.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/execveat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/execveat--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "execveat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/faccessat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/faccessat--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "faccessat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/faccessat-y--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/faccessat-y--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "faccessat-y.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/fanotify_mark--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fanotify_mark--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fanotify_mark.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/fchmod--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchmod--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmod.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/fchmod-y--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchmod-y--secontext.c 2021-08-24 21:08:43.295245688 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmod-y.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/fchmodat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchmodat--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmodat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/fchownat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchownat--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchownat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/file_handle--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/file_handle--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "file_handle.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/linkat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/linkat--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "linkat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/open--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/open--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "open.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-mx32/openat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/openat--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_MX32_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "openat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_MX32_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/access--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/access--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "access.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/chmod--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/chmod--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "chmod.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/execve--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/execve--secontext.c 2021-08-24 21:08:43.296245680 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "execve.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/execveat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/execveat--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "execveat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/faccessat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/faccessat--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "faccessat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/faccessat-y--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/faccessat-y--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "faccessat-y.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/fanotify_mark--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fanotify_mark--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fanotify_mark.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/fchmod--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchmod--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmod.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/fchmod-y--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchmod-y--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmod-y.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/fchmodat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchmodat--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchmodat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/fchownat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchownat--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "fchownat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/file_handle--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/file_handle--secontext.c 2021-08-24 21:08:43.297245671 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "file_handle.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/linkat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/linkat--secontext.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "linkat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/open--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/open--secontext.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "open.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests/openat--secontext.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/openat--secontext.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_SELINUX_RUNTIME
+
+# define TEST_SECONTEXT
+# include "openat.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_SELINUX_RUNTIME")
+
+#endif
Index: strace-5.7/tests-m32/access--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/access--secontext_full.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "access--secontext.c"
Index: strace-5.7/tests-m32/chmod--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/chmod--secontext_full.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "chmod--secontext.c"
Index: strace-5.7/tests-m32/execve--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/execve--secontext_full.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "execve--secontext.c"
Index: strace-5.7/tests-m32/execveat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/execveat--secontext_full.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "execveat--secontext.c"
Index: strace-5.7/tests-m32/faccessat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/faccessat--secontext_full.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "faccessat--secontext.c"
Index: strace-5.7/tests-m32/faccessat-y--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/faccessat-y--secontext_full.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "faccessat-y--secontext.c"
Index: strace-5.7/tests-m32/fanotify_mark--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fanotify_mark--secontext_full.c 2021-08-24 21:08:43.298245663 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fanotify_mark--secontext.c"
Index: strace-5.7/tests-m32/fchmod--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchmod--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmod--secontext.c"
Index: strace-5.7/tests-m32/fchmod-y--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchmod-y--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmod-y--secontext.c"
Index: strace-5.7/tests-m32/fchmodat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchmodat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmodat--secontext.c"
Index: strace-5.7/tests-m32/fchownat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/fchownat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchownat--secontext.c"
Index: strace-5.7/tests-m32/file_handle--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/file_handle--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "file_handle--secontext.c"
Index: strace-5.7/tests-m32/linkat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/linkat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "linkat--secontext.c"
Index: strace-5.7/tests-m32/open--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/open--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "open--secontext.c"
Index: strace-5.7/tests-m32/openat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-m32/openat--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "openat--secontext.c"
Index: strace-5.7/tests-mx32/access--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/access--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "access--secontext.c"
Index: strace-5.7/tests-mx32/chmod--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/chmod--secontext_full.c 2021-08-24 21:08:43.299245654 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "chmod--secontext.c"
Index: strace-5.7/tests-mx32/execve--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/execve--secontext_full.c 2021-08-24 21:08:43.300245646 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "execve--secontext.c"
Index: strace-5.7/tests-mx32/execveat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/execveat--secontext_full.c 2021-08-24 21:08:43.300245646 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "execveat--secontext.c"
Index: strace-5.7/tests-mx32/faccessat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/faccessat--secontext_full.c 2021-08-24 21:08:43.300245646 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "faccessat--secontext.c"
Index: strace-5.7/tests-mx32/faccessat-y--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/faccessat-y--secontext_full.c 2021-08-24 21:08:43.300245646 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "faccessat-y--secontext.c"
Index: strace-5.7/tests-mx32/fanotify_mark--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fanotify_mark--secontext_full.c 2021-08-24 21:08:43.300245646 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fanotify_mark--secontext.c"
Index: strace-5.7/tests-mx32/fchmod--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchmod--secontext_full.c 2021-08-24 21:08:43.300245646 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmod--secontext.c"
Index: strace-5.7/tests-mx32/fchmod-y--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchmod-y--secontext_full.c 2021-08-24 21:08:43.300245646 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmod-y--secontext.c"
Index: strace-5.7/tests-mx32/fchmodat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchmodat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmodat--secontext.c"
Index: strace-5.7/tests-mx32/fchownat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/fchownat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchownat--secontext.c"
Index: strace-5.7/tests-mx32/file_handle--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/file_handle--secontext_full.c 2021-08-24 21:08:43.301245637 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "file_handle--secontext.c"
Index: strace-5.7/tests-mx32/linkat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/linkat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "linkat--secontext.c"
Index: strace-5.7/tests-mx32/open--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/open--secontext_full.c 2021-08-24 21:08:43.301245637 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "open--secontext.c"
Index: strace-5.7/tests-mx32/openat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests-mx32/openat--secontext_full.c 2021-08-24 21:08:43.301245637 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "openat--secontext.c"
Index: strace-5.7/tests/access--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/access--secontext_full.c 2021-08-24 21:08:43.301245637 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "access--secontext.c"
Index: strace-5.7/tests/chmod--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/chmod--secontext_full.c 2021-08-24 21:08:43.302245629 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "chmod--secontext.c"
Index: strace-5.7/tests/execve--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/execve--secontext_full.c 2021-08-24 21:08:43.302245629 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "execve--secontext.c"
Index: strace-5.7/tests/execveat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/execveat--secontext_full.c 2021-08-24 21:08:43.302245629 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "execveat--secontext.c"
Index: strace-5.7/tests/faccessat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/faccessat--secontext_full.c 2021-08-24 21:08:43.302245629 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "faccessat--secontext.c"
Index: strace-5.7/tests/faccessat-y--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/faccessat-y--secontext_full.c 2021-08-24 21:08:43.302245629 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "faccessat-y--secontext.c"
Index: strace-5.7/tests/fanotify_mark--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fanotify_mark--secontext_full.c 2021-08-24 21:08:43.302245629 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fanotify_mark--secontext.c"
Index: strace-5.7/tests/fchmod--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchmod--secontext_full.c 2021-08-24 21:08:43.302245629 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmod--secontext.c"
Index: strace-5.7/tests/fchmod-y--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchmod-y--secontext_full.c 2021-08-24 21:08:43.303245621 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmod-y--secontext.c"
Index: strace-5.7/tests/fchmodat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchmodat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchmodat--secontext.c"
Index: strace-5.7/tests/fchownat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/fchownat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "fchownat--secontext.c"
Index: strace-5.7/tests/file_handle--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/file_handle--secontext_full.c 2021-08-24 21:08:43.303245621 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "file_handle--secontext.c"
Index: strace-5.7/tests/linkat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/linkat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "linkat--secontext.c"
Index: strace-5.7/tests/open--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/open--secontext_full.c 2021-08-24 21:08:43.303245621 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "open--secontext.c"
Index: strace-5.7/tests/openat--secontext_full.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ strace-5.7/tests/openat--secontext_full.c 2021-08-24 21:08:43.303245621 +0200
@@ -0,0 +1,2 @@
+#define PRINT_SECONTEXT_FULL
+#include "openat--secontext.c"
Index: strace-5.7/config.h.in
===================================================================
--- strace-5.7.orig/config.h.in 2021-08-24 21:08:35.510311579 +0200
+++ strace-5.7/config.h.in 2021-08-24 21:08:43.304245612 +0200
@@ -36,6 +36,9 @@
/* Define to 1 if you want OABI support on ARM EABI. */
#undef ENABLE_ARM_OABI
+/* Define to enable SELinux security contexts support */
+#undef ENABLE_SECONTEXT
+
/* Define to enable stack tracing support */
#undef ENABLE_STACKTRACE
@@ -2253,6 +2256,12 @@
/* Define to 1 if you have the <scsi/sg.h> header file. */
#undef HAVE_SCSI_SG_H
+/* Define to enable SELinux security contexts testing */
+#undef HAVE_SELINUX_RUNTIME
+
+/* Define to 1 if you have the <selinux/selinux.h> header file. */
+#undef HAVE_SELINUX_SELINUX_H
+
/* Define to 1 if `si_overrun' is a member of `siginfo_t'. */
#undef HAVE_SIGINFO_T_SI_OVERRUN
Index: strace-5.7/configure
===================================================================
--- strace-5.7.orig/configure 2021-08-24 17:01:46.714990240 +0200
+++ strace-5.7/configure 2021-08-24 21:08:43.315245519 +0200
@@ -641,10 +641,14 @@
VALGRIND
HAVE_MX32_MPERS_FALSE
HAVE_MX32_MPERS_TRUE
+HAVE_MX32_SELINUX_RUNTIME_FALSE
+HAVE_MX32_SELINUX_RUNTIME_TRUE
HAVE_MX32_RUNTIME_FALSE
HAVE_MX32_RUNTIME_TRUE
HAVE_M32_MPERS_FALSE
HAVE_M32_MPERS_TRUE
+HAVE_M32_SELINUX_RUNTIME_FALSE
+HAVE_M32_SELINUX_RUNTIME_TRUE
HAVE_M32_RUNTIME_FALSE
HAVE_M32_RUNTIME_TRUE
CFLAGS_FOR_MX32
@@ -655,6 +659,13 @@
CPPFLAGS_FOR_M32
CPP_FOR_M32
CC_FOR_M32
+HAVE_SELINUX_RUNTIME_FALSE
+HAVE_SELINUX_RUNTIME_TRUE
+ENABLE_SECONTEXT_FALSE
+ENABLE_SECONTEXT_TRUE
+libselinux_CPPFLAGS
+libselinux_LDFLAGS
+libselinux_LIBS
USE_DEMANGLE_FALSE
USE_DEMANGLE_TRUE
libiberty_CPPFLAGS
@@ -827,6 +838,7 @@
with_libdw
with_libunwind
with_libiberty
+with_libselinux
enable_mpers
enable_valgrind
enable_valgrind_memcheck
@@ -1498,6 +1510,7 @@
--with-libunwind use libunwind to implement stack tracing support
--with-libiberty use libiberty to demangle symbols in stack trace
+ --with-libselinux use libselinux to collect security contexts
Some influential environment variables:
CC C compiler command
@@ -22728,6 +22741,203 @@
+
+libselinux_CPPFLAGS=
+libselinux_LDFLAGS=
+libselinux_LIBS=
+enable_secontext=no
+
+
+# Check whether --with-libselinux was given.
+if test "${with_libselinux+set}" = set; then :
+ withval=$with_libselinux; case "${withval}" in
+ yes|no|check) ;;
+ *) with_libselinux=yes
+ libselinux_CPPFLAGS="-I${withval}/include"
+ libselinux_LDFLAGS="-L${withval}/lib" ;;
+ esac
+else
+ with_libselinux=check
+
+fi
+
+
+if test "x$with_libselinux" != xno; then :
+ saved_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS"
+ found_selinux_h=no
+ for ac_header in selinux/selinux.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
+if test "x$ac_cv_header_selinux_selinux_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SELINUX_SELINUX_H 1
+_ACEOF
+ found_selinux_h=yes
+fi
+
+done
+
+ CPPFLAGS="$saved_CPPFLAGS"
+ if test "x$found_selinux_h" = xyes; then :
+ saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $libselinux_LDFLAGS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpidcon in -lselinux" >&5
+$as_echo_n "checking for getpidcon in -lselinux... " >&6; }
+if ${ac_cv_lib_selinux_getpidcon+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lselinux $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getpidcon ();
+int
+main ()
+{
+return getpidcon ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_selinux_getpidcon=yes
+else
+ ac_cv_lib_selinux_getpidcon=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_getpidcon" >&5
+$as_echo "$ac_cv_lib_selinux_getpidcon" >&6; }
+if test "x$ac_cv_lib_selinux_getpidcon" = xyes; then :
+ libselinux_LIBS="-lselinux"
+ enable_secontext=yes
+
+else
+ if test "x$with_libselinux" != xcheck; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find getpidcon in libselinux
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getfilecon in -lselinux" >&5
+$as_echo_n "checking for getfilecon in -lselinux... " >&6; }
+if ${ac_cv_lib_selinux_getfilecon+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lselinux $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getfilecon ();
+int
+main ()
+{
+return getfilecon ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_selinux_getfilecon=yes
+else
+ ac_cv_lib_selinux_getfilecon=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_getfilecon" >&5
+$as_echo "$ac_cv_lib_selinux_getfilecon" >&6; }
+if test "x$ac_cv_lib_selinux_getfilecon" = xyes; then :
+ libselinux_LIBS="-lselinux"
+ enable_secontext=yes
+
+else
+ if test "x$with_libselinux" != xcheck; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find getfilecon in libselinux
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+
+
+fi
+
+ LDFLAGS="$saved_LDFLAGS"
+
+else
+ if test "x$with_libselinux" != xcheck; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find selinux.h
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+
+
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable security contexts support" >&5
+$as_echo_n "checking whether to enable security contexts support... " >&6; }
+if test "x$enable_secontext" = xyes; then :
+
+$as_echo "#define ENABLE_SECONTEXT 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_SELINUX_RUNTIME 1" >>confdefs.h
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$enable_secontext" = xyes; then
+ ENABLE_SECONTEXT_TRUE=
+ ENABLE_SECONTEXT_FALSE='#'
+else
+ ENABLE_SECONTEXT_TRUE='#'
+ ENABLE_SECONTEXT_FALSE=
+fi
+
+ if test "x$enable_secontext" = xyes; then
+ HAVE_SELINUX_RUNTIME_TRUE=
+ HAVE_SELINUX_RUNTIME_FALSE='#'
+else
+ HAVE_SELINUX_RUNTIME_TRUE='#'
+ HAVE_SELINUX_RUNTIME_FALSE=
+fi
+
+
+
+
if test "$arch" = mips && test "$no_create" != yes; then
mkdir -p linux/mips
if $srcdir/linux/mips/genstub.sh \
@@ -22839,6 +23049,8 @@
+
+
if test -n "${CC+set}"; then :
st_saved_CC="${CC}"; unset CC
fi
@@ -22964,6 +23176,47 @@
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_m32_mpers" >&5
$as_echo "$st_cv_m32_mpers" >&6; }
+ if test "x$enable_secontext$st_cv_m32_mpers$st_cv_m32_runtime" = xyesyesyes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether selinux runtime works with m32 personality" >&5
+$as_echo_n "checking whether selinux runtime works with m32 personality... " >&6; }
+if ${st_cv_m32_selinux_runtime+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ saved_CPPFLAGS="$CPPFLAGS"
+ saved_LDFLAGS="$LDFLAGS_FOR_M32"
+ saved_LIBS="$LIBS"
+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS"
+ LDFLAGS_FOR_M32="$LDFLAGS_FOR_M32 $libselinux_LDFLAGS"
+ LIBS="$LIBS $libselinux_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <selinux/selinux.h>
+int
+main ()
+{
+return 0
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ st_cv_m32_selinux_runtime=yes
+else
+ st_cv_m32_selinux_runtime=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$saved_LIBS"
+ LDFLAGS_FOR_M32="$saved_LDFLAGS"
+ CPPFLAGS="$saved_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_m32_selinux_runtime" >&5
+$as_echo "$st_cv_m32_selinux_runtime" >&6; }
+
+else
+ st_cv_m32_selinux_runtime=no
+fi
if test $st_cv_m32_mpers = yes; then
$as_echo "#define HAVE_M32_MPERS 1" >>confdefs.h
@@ -23387,6 +23640,7 @@
*) # case "$enable_mpers"
st_cv_m32_runtime=no
st_cv_m32_mpers=no
+ st_cv_m32_selinux_runtime=no
;;
esac
@@ -23418,6 +23672,14 @@
HAVE_M32_RUNTIME_FALSE=
fi
+ if test "$st_cv_m32_mpers$st_cv_m32_selinux_runtime" = yesyes; then
+ HAVE_M32_SELINUX_RUNTIME_TRUE=
+ HAVE_M32_SELINUX_RUNTIME_FALSE='#'
+else
+ HAVE_M32_SELINUX_RUNTIME_TRUE='#'
+ HAVE_M32_SELINUX_RUNTIME_FALSE=
+fi
+
if test "$st_cv_m32_mpers" = yes; then
HAVE_M32_MPERS_TRUE=
HAVE_M32_MPERS_FALSE='#'
@@ -23467,6 +23729,10 @@
+
+
+
+
if test -n "${CC+set}"; then :
st_saved_CC="${CC}"; unset CC
fi
@@ -23592,6 +23858,47 @@
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mx32_mpers" >&5
$as_echo "$st_cv_mx32_mpers" >&6; }
+ if test "x$enable_secontext$st_cv_mx32_mpers$st_cv_mx32_runtime" = xyesyesyes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether selinux runtime works with mx32 personality" >&5
+$as_echo_n "checking whether selinux runtime works with mx32 personality... " >&6; }
+if ${st_cv_mx32_selinux_runtime+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ saved_CPPFLAGS="$CPPFLAGS"
+ saved_LDFLAGS="$LDFLAGS_FOR_MX32"
+ saved_LIBS="$LIBS"
+ CPPFLAGS="$CPPFLAGS $libselinux_CPPFLAGS"
+ LDFLAGS_FOR_MX32="$LDFLAGS_FOR_MX32 $libselinux_LDFLAGS"
+ LIBS="$LIBS $libselinux_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <selinux/selinux.h>
+int
+main ()
+{
+return 0
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ st_cv_mx32_selinux_runtime=yes
+else
+ st_cv_mx32_selinux_runtime=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$saved_LIBS"
+ LDFLAGS_FOR_MX32="$saved_LDFLAGS"
+ CPPFLAGS="$saved_CPPFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_mx32_selinux_runtime" >&5
+$as_echo "$st_cv_mx32_selinux_runtime" >&6; }
+
+else
+ st_cv_mx32_selinux_runtime=no
+fi
if test $st_cv_mx32_mpers = yes; then
$as_echo "#define HAVE_MX32_MPERS 1" >>confdefs.h
@@ -24015,6 +24322,7 @@
*) # case "$enable_mpers"
st_cv_mx32_runtime=no
st_cv_mx32_mpers=no
+ st_cv_mx32_selinux_runtime=no
;;
esac
@@ -24046,6 +24354,14 @@
HAVE_MX32_RUNTIME_FALSE=
fi
+ if test "$st_cv_mx32_mpers$st_cv_mx32_selinux_runtime" = yesyes; then
+ HAVE_MX32_SELINUX_RUNTIME_TRUE=
+ HAVE_MX32_SELINUX_RUNTIME_FALSE='#'
+else
+ HAVE_MX32_SELINUX_RUNTIME_TRUE='#'
+ HAVE_MX32_SELINUX_RUNTIME_FALSE=
+fi
+
if test "$st_cv_mx32_mpers" = yes; then
HAVE_MX32_MPERS_TRUE=
HAVE_MX32_MPERS_FALSE='#'
@@ -24088,6 +24404,8 @@
+
+
# Check whether --enable-valgrind was given.
if test "${enable_valgrind+set}" = set; then :
enableval=$enable_valgrind; enable_valgrind=$enableval
@@ -24659,10 +24977,22 @@
as_fn_error $? "conditional \"USE_DEMANGLE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${ENABLE_SECONTEXT_TRUE}" && test -z "${ENABLE_SECONTEXT_FALSE}"; then
+ as_fn_error $? "conditional \"ENABLE_SECONTEXT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_SELINUX_RUNTIME_TRUE}" && test -z "${HAVE_SELINUX_RUNTIME_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_SELINUX_RUNTIME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_M32_RUNTIME_TRUE}" && test -z "${HAVE_M32_RUNTIME_FALSE}"; then
as_fn_error $? "conditional \"HAVE_M32_RUNTIME\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_M32_SELINUX_RUNTIME_TRUE}" && test -z "${HAVE_M32_SELINUX_RUNTIME_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_M32_SELINUX_RUNTIME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_M32_MPERS_TRUE}" && test -z "${HAVE_M32_MPERS_FALSE}"; then
as_fn_error $? "conditional \"HAVE_M32_MPERS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -24671,6 +25001,10 @@
as_fn_error $? "conditional \"HAVE_MX32_RUNTIME\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_MX32_SELINUX_RUNTIME_TRUE}" && test -z "${HAVE_MX32_SELINUX_RUNTIME_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_MX32_SELINUX_RUNTIME\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_MX32_MPERS_TRUE}" && test -z "${HAVE_MX32_MPERS_FALSE}"; then
as_fn_error $? "conditional \"HAVE_MX32_MPERS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5