Compare commits
No commits in common. "c8" and "c9-beta" have entirely different histories.
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/strace-5.18.tar.xz
|
SOURCES/strace-6.12.tar.xz
|
||||||
|
@ -1 +1 @@
|
|||||||
e038ea9fc29366ce6119cde27d8cf16ac554a353 SOURCES/strace-5.18.tar.xz
|
ef17e67a01a2ea3f4b6930d491d0a53e84768737 SOURCES/strace-6.12.tar.xz
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
From 2bf069698a384ff2bc62d2a10544d49d766b4d7f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Mon, 27 Jun 2022 18:00:17 +0200
|
|
||||||
Subject: [PATCH] src/xlat: remove remnants of unnecessary idx usage in xlookup
|
|
||||||
|
|
||||||
As there is no idx saving between calls anymore, there's no need to use
|
|
||||||
(and update) idx in the XT_SORTED case. Reported by clang as a dead store:
|
|
||||||
|
|
||||||
Error: CLANG_WARNING:
|
|
||||||
strace-5.18/src/xlat.c:84:4: warning[deadcode.DeadStores]: Value stored to 'idx' is never read
|
|
||||||
|
|
||||||
* src/xlat.c (xlookup): Remove idx declaration; declare idx inside
|
|
||||||
of the for loop in the XT_NORMAL case; do not offset x->data and x->size
|
|
||||||
by offs in the XT_SORTED case and do not update idx upon successful
|
|
||||||
lookup.
|
|
||||||
|
|
||||||
Complements: v5.15~164 "xlat: no longer interpret NULL xlat as continuation"
|
|
||||||
---
|
|
||||||
src/xlat.c | 10 +++-------
|
|
||||||
1 file changed, 3 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
Index: strace-5.18/src/xlat.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/xlat.c 2022-07-12 17:11:52.660927011 +0200
|
|
||||||
+++ strace-5.18/src/xlat.c 2022-07-12 17:16:18.116794139 +0200
|
|
||||||
@@ -61,7 +61,6 @@
|
|
||||||
const char *
|
|
||||||
xlookup(const struct xlat *x, const uint64_t val)
|
|
||||||
{
|
|
||||||
- size_t idx = 0;
|
|
||||||
const struct xlat_data *e;
|
|
||||||
|
|
||||||
if (!x || !x->data)
|
|
||||||
@@ -69,21 +68,18 @@
|
|
||||||
|
|
||||||
switch (x->type) {
|
|
||||||
case XT_NORMAL:
|
|
||||||
- for (; idx < x->size; idx++)
|
|
||||||
+ for (size_t idx = 0; idx < x->size; idx++)
|
|
||||||
if (x->data[idx].val == val)
|
|
||||||
return x->data[idx].str;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case XT_SORTED:
|
|
||||||
e = bsearch((const void *) &val,
|
|
||||||
- x->data + idx,
|
|
||||||
- x->size - idx,
|
|
||||||
+ x->data, x->size,
|
|
||||||
sizeof(x->data[0]),
|
|
||||||
xlat_bsearch_compare);
|
|
||||||
- if (e) {
|
|
||||||
- idx = e - x->data;
|
|
||||||
+ if (e)
|
|
||||||
return e->str;
|
|
||||||
- }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case XT_INDEXED:
|
|
@ -1,56 +0,0 @@
|
|||||||
From e604d7bfd18cf5f29e6723091cc1db2945c918c9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Tue, 28 Jun 2022 16:46:53 +0200
|
|
||||||
Subject: [PATCH] strauss: tips whitespace and phrasing cleanups
|
|
||||||
|
|
||||||
* src/strauss.c (tips_tricks_tweaks): Fix some whitespace and phrasing
|
|
||||||
issues.
|
|
||||||
---
|
|
||||||
src/strauss.c | 13 +++++++------
|
|
||||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
Index: strace-5.18/src/strauss.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/strauss.c 2022-07-12 17:17:08.712197019 +0200
|
|
||||||
+++ strace-5.18/src/strauss.c 2022-07-12 17:17:20.685055717 +0200
|
|
||||||
@@ -128,8 +128,8 @@
|
|
||||||
{ "strace is about as old as the Linux kernel.",
|
|
||||||
"It has been originally written for SunOS",
|
|
||||||
"by Paul Kranenburg in 1991. The support",
|
|
||||||
- "for all OSes except Linux has been dropped",
|
|
||||||
- "since 2012, though, in strace 4.7." },
|
|
||||||
+ "for all OSes except Linux was dropped"
|
|
||||||
+ "in 2012, though, in strace 4.7." },
|
|
||||||
{ "strace is able to decode netlink messages.",
|
|
||||||
"It does so automatically for I/O performed",
|
|
||||||
"on netlink sockets. Try it yourself:", "",
|
|
||||||
@@ -187,7 +187,7 @@
|
|
||||||
"want to try --seccomp-bpf option, maybe you",
|
|
||||||
"will feel better." },
|
|
||||||
{ "-v is a shorthand for -e abbrev=none and not",
|
|
||||||
- " for -e verbose=all. It is idiosyncratic,",
|
|
||||||
+ "for -e verbose=all. It is idiosyncratic,",
|
|
||||||
"but it is the historic behaviour." },
|
|
||||||
{ "strace uses netlink for printing",
|
|
||||||
"protocol-specific information about socket",
|
|
||||||
@@ -254,7 +254,7 @@
|
|
||||||
"by invoking it with the following options:", "",
|
|
||||||
" strace -DDDqqq -enone --signal=none" },
|
|
||||||
{ "Historically, supplying -o option to strace",
|
|
||||||
- "led to silencing of messages about tracee",
|
|
||||||
+ "leads to silencing of messages about tracee",
|
|
||||||
"attach/detach and personality changes.",
|
|
||||||
"It can be now overridden with --quiet=none",
|
|
||||||
"option." },
|
|
||||||
@@ -285,8 +285,9 @@
|
|
||||||
"will trace all syscalls related to accessing",
|
|
||||||
"and modifying process's user/group IDs",
|
|
||||||
"and capability sets. Other pre-defined",
|
|
||||||
- "syscall classes include %clock, %desc,%file,",
|
|
||||||
- "%ipc,%memory, %net,%process, and %signal." },
|
|
||||||
+ "syscall classes include %clock, %desc,"
|
|
||||||
+ "%file, %ipc, %memory, %net, %process,"
|
|
||||||
+ "and %signal." },
|
|
||||||
{ "Trying to figure out communication between",
|
|
||||||
"tracees inside a different PID namespace",
|
|
||||||
"(in so-called \"containers\", for example)?",
|
|
@ -1,48 +0,0 @@
|
|||||||
From 968789d5426442ac43b96eabd65f3e5c0c141e62 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Tue, 28 Jun 2022 16:47:56 +0200
|
|
||||||
Subject: [PATCH] strauss: fix off-by-one error in strauss array access
|
|
||||||
|
|
||||||
It has to be limited with strauss_lines - 1, not strauss_lines.
|
|
||||||
Reported by covscan:
|
|
||||||
|
|
||||||
Error: OVERRUN (CWE-119):
|
|
||||||
strace-5.18/src/strauss.c:380: cond_at_least: Checking "4UL + i < 37UL"
|
|
||||||
implies that "i" is at least 33 on the false branch.
|
|
||||||
strace-5.18/src/strauss.c:380: overrun-local: Overrunning array "strauss"
|
|
||||||
of 37 8-byte elements at element index 37 (byte offset 303) using index
|
|
||||||
"(4UL + i < 37UL) ? 4UL + i : 37UL" (which evaluates to 37).
|
|
||||||
|
|
||||||
* src/strauss.c (print_totd): Limit strauss array accesses to
|
|
||||||
strauss_lines - 1 instead of strauss_lines.
|
|
||||||
---
|
|
||||||
src/strauss.c | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/strauss.c b/src/strauss.c
|
|
||||||
index 98af183..b22ab6a 100644
|
|
||||||
--- a/src/strauss.c
|
|
||||||
+++ b/src/strauss.c
|
|
||||||
@@ -373,16 +373,16 @@ print_totd(void)
|
|
||||||
tip_left[MIN(i + 1, ARRAY_SIZE(tip_left) - 1)],
|
|
||||||
w, w, tips_tricks_tweaks[id][i] ?: "",
|
|
||||||
tip_right[MIN(i + 1, ARRAY_SIZE(tip_right) - 1)],
|
|
||||||
- strauss[MIN(3 + i, strauss_lines)]);
|
|
||||||
+ strauss[MIN(3 + i, strauss_lines - 1)]);
|
|
||||||
}
|
|
||||||
fprintf(stderr, "%s%s\n",
|
|
||||||
- tip_bottom, strauss[MIN(3 + i, strauss_lines)]);
|
|
||||||
+ tip_bottom, strauss[MIN(3 + i, strauss_lines - 1)]);
|
|
||||||
do {
|
|
||||||
fprintf(stderr, "%*s%*s%*s%s\n",
|
|
||||||
(int) strlen(tip_left[0]), "",
|
|
||||||
w, "",
|
|
||||||
(int) strlen(tip_right[0]), "",
|
|
||||||
- strauss[MIN(4 + i, strauss_lines)]);
|
|
||||||
+ strauss[MIN(4 + i, strauss_lines - 1)]);
|
|
||||||
} while ((show_tips == TIPS_FULL) && (4 + ++i < strauss_lines));
|
|
||||||
|
|
||||||
printed = true;
|
|
||||||
--
|
|
||||||
2.1.4
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
|||||||
From 6d3e97e83a7d61cbb2f5109efb4b519383a55712 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Tue, 28 Jun 2022 16:55:49 +0200
|
|
||||||
Subject: [PATCH] util: add offs sanity check to print_clock_t
|
|
||||||
|
|
||||||
While it is not strictly needed right now, the code that uses
|
|
||||||
the calculated offs value lacks any checks for possible buf overruns,
|
|
||||||
which is not defensive enough, so let's add them. Reported by covscan:
|
|
||||||
|
|
||||||
Error: OVERRUN (CWE-119):
|
|
||||||
strace-5.18/src/util.c:248: assignment: Assigning:
|
|
||||||
"offs" = "ilog10(val / clk_tck)". The value of "offs" is now between
|
|
||||||
16 and 31 (inclusive).
|
|
||||||
strace-5.18/src/util.c:249: overrun-local: Overrunning array of 30 bytes
|
|
||||||
at byte offset 31 by dereferencing pointer "buf + offs". [Note: The source
|
|
||||||
code implementation of the function has been overridden by a builtin model.]
|
|
||||||
|
|
||||||
Error: OVERRUN (CWE-119):
|
|
||||||
strace-5.18/src/util.c:248: assignment: Assigning:
|
|
||||||
"offs" = "ilog10(val / clk_tck)". The value of "offs" is now between
|
|
||||||
16 and 31 (inclusive).
|
|
||||||
strace-5.18/src/util.c:253: overrun-buffer-arg: Overrunning array "buf"
|
|
||||||
of 30 bytes by passing it to a function which accesses it at byte offset
|
|
||||||
32 using argument "offs + 2UL" (which evaluates to 33). [Note: The source
|
|
||||||
code implementation of the function has been overridden by a builtin model.]
|
|
||||||
|
|
||||||
Error: OVERRUN (CWE-119):
|
|
||||||
strace-5.18/src/util.c:248: assignment: Assigning:
|
|
||||||
"offs" = "ilog10(val / clk_tck)". The value of "offs" is now between
|
|
||||||
16 and 31 (inclusive).
|
|
||||||
strace-5.18/src/util.c:254: overrun-local: Overrunning array "buf"
|
|
||||||
of 30 bytes at byte offset 32 using index "offs + 1UL" (which evaluates
|
|
||||||
to 32).
|
|
||||||
|
|
||||||
* src/util.c (print_clock_t): Add check that offs is small enough
|
|
||||||
for it and "offs + 2" not to overrun buf.
|
|
||||||
---
|
|
||||||
src/util.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/util.c b/src/util.c
|
|
||||||
index 5f87acb..93aa7b3 100644
|
|
||||||
--- a/src/util.c
|
|
||||||
+++ b/src/util.c
|
|
||||||
@@ -246,6 +246,14 @@ print_clock_t(uint64_t val)
|
|
||||||
*/
|
|
||||||
char buf[sizeof(uint64_t) * 3 + sizeof("0.0 s")];
|
|
||||||
size_t offs = ilog10(val / clk_tck);
|
|
||||||
+ /*
|
|
||||||
+ * This check is mostly to appease covscan, which thinks
|
|
||||||
+ * that offs can go as high as 31 (it cannot), but since
|
|
||||||
+ * there is no proper sanity checks against offs overrunning
|
|
||||||
+ * buf down the code, it may as well be here.
|
|
||||||
+ */
|
|
||||||
+ if (offs > (sizeof(buf) - sizeof("0.0 s")))
|
|
||||||
+ return;
|
|
||||||
int ret = snprintf(buf + offs, sizeof(buf) - offs, "%.*f s",
|
|
||||||
frac_width,
|
|
||||||
(double) (val % clk_tck) / clk_tck);
|
|
||||||
--
|
|
||||||
2.1.4
|
|
||||||
|
|
@ -1,882 +0,0 @@
|
|||||||
From 960e78f208b4f6d48962bbc9cad45588cc8c90ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Renaud=20M=C3=A9trich?= <rmetrich@redhat.com>
|
|
||||||
Date: Tue, 21 Jun 2022 08:43:00 +0200
|
|
||||||
Subject: [PATCH] secontext: print context of Unix socket's sun_path field
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Signed-off-by: Renaud Métrich <rmetrich@redhat.com>
|
|
||||||
|
|
||||||
* src/sockaddr.c: Include "secontext.h".
|
|
||||||
(print_sockaddr_data_un): Print the SELinux context of sun_path field
|
|
||||||
using selinux_printfilecon.
|
|
||||||
* NEWS: Mention this change.
|
|
||||||
* tests/secontext.c (raw_secontext_full_fd, get_secontext_field_fd,
|
|
||||||
raw_secontext_short_fd, secontext_full_fd, secontext_short_fd): New
|
|
||||||
functions.
|
|
||||||
* tests/secontext.h (secontext_full_fd, secontext_short_fd,
|
|
||||||
get_secontext_field_fd): New prototypes.
|
|
||||||
(SECONTEXT_FD): New macro.
|
|
||||||
* tests/sockname.c: Include "secontext.h".
|
|
||||||
(test_sockname_syscall): Update expected output.
|
|
||||||
* tests/gen_tests.in (getsockname--secontext,
|
|
||||||
getsockname--secontext_full, getsockname--secontext_full_mismatch,
|
|
||||||
getsockname--secontext_mismatch): New tests.
|
|
||||||
|
|
||||||
Resolves: https://github.com/strace/strace/pull/214
|
|
||||||
---
|
|
||||||
NEWS | 1 +
|
|
||||||
src/sockaddr.c | 3 +++
|
|
||||||
tests/gen_tests.in | 4 ++++
|
|
||||||
tests/secontext.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
tests/secontext.h | 12 ++++++++++++
|
|
||||||
tests/sockname.c | 54 +++++++++++++++++++++++++++++++++++-------------------
|
|
||||||
6 files changed, 104 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
Index: strace-5.18/NEWS
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/NEWS 2022-07-12 18:20:18.495470531 +0200
|
|
||||||
+++ strace-5.18/NEWS 2022-07-12 18:20:44.531163262 +0200
|
|
||||||
@@ -5,6 +5,7 @@
|
|
||||||
* Added an interface of raising des Strausses awareness.
|
|
||||||
* Added --tips option to print strace tips, tricks, and tweaks
|
|
||||||
at the end of the tracing session.
|
|
||||||
+ * Implemented printing of Unix socket sun_path field's SELinux context.
|
|
||||||
* Enhanced decoding of bpf and io_uring_register syscalls.
|
|
||||||
* Implemented decoding of COUNTER_*, RTC_PARAM_GET, and RTC_PARAM_SET ioctl
|
|
||||||
commands.
|
|
||||||
Index: strace-5.18/src/sockaddr.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/sockaddr.c 2022-07-12 18:17:36.745379483 +0200
|
|
||||||
+++ strace-5.18/src/sockaddr.c 2022-07-12 18:20:18.495470531 +0200
|
|
||||||
@@ -63,6 +63,8 @@
|
|
||||||
#include "xlat/mctp_addrs.h"
|
|
||||||
#include "xlat/mctp_nets.h"
|
|
||||||
|
|
||||||
+#include "secontext.h"
|
|
||||||
+
|
|
||||||
#define SIZEOF_SA_FAMILY sizeof_field(struct sockaddr, sa_family)
|
|
||||||
|
|
||||||
struct sockaddr_rxrpc {
|
|
||||||
@@ -115,6 +117,7 @@
|
|
||||||
if (sa_un->sun_path[0]) {
|
|
||||||
print_quoted_string(sa_un->sun_path, path_len + 1,
|
|
||||||
QUOTE_0_TERMINATED);
|
|
||||||
+ selinux_printfilecon(tcp, sa_un->sun_path);
|
|
||||||
} else {
|
|
||||||
tprints("@");
|
|
||||||
print_quoted_string(sa_un->sun_path + 1, path_len - 1, 0);
|
|
||||||
Index: strace-5.18/tests/gen_tests.in
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests/gen_tests.in 2022-07-12 18:17:36.746379471 +0200
|
|
||||||
+++ strace-5.18/tests/gen_tests.in 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -225,6 +225,10 @@
|
|
||||||
getsid -a10
|
|
||||||
getsid--pidns-translation test_pidns -e trace=getsid -a10
|
|
||||||
getsockname -a27
|
|
||||||
+getsockname--secontext -a27 --secontext -e trace=getsockname
|
|
||||||
+getsockname--secontext_full -a27 --secontext=full -e trace=getsockname
|
|
||||||
+getsockname--secontext_full_mismatch -a27 --secontext=full,mismatch -e trace=getsockname
|
|
||||||
+getsockname--secontext_mismatch -a27 --secontext=mismatch -e trace=getsockname
|
|
||||||
gettid -a9
|
|
||||||
getuid-creds +getuid.test
|
|
||||||
getuid32 +getuid.test
|
|
||||||
Index: strace-5.18/tests/secontext.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests/secontext.c 2022-07-12 18:17:36.747379459 +0200
|
|
||||||
+++ strace-5.18/tests/secontext.c 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -141,6 +141,21 @@
|
|
||||||
return full_secontext;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static char *
|
|
||||||
+raw_secontext_full_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *full_secontext = NULL;
|
|
||||||
+ char *secontext;
|
|
||||||
+
|
|
||||||
+ if (fgetfilecon(fd, &secontext) >= 0) {
|
|
||||||
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
|
|
||||||
+ freecon(secontext);
|
|
||||||
+ }
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return full_secontext;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
char *
|
|
||||||
get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
{
|
|
||||||
@@ -151,6 +166,16 @@
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
+char *
|
|
||||||
+get_secontext_field_fd(int fd, enum secontext_field field)
|
|
||||||
+{
|
|
||||||
+ char *ctx = raw_secontext_full_fd(fd);
|
|
||||||
+ char *type = get_secontext_field(ctx, field);
|
|
||||||
+ free(ctx);
|
|
||||||
+
|
|
||||||
+ return type;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static char *
|
|
||||||
raw_secontext_short_file(const char *filename)
|
|
||||||
{
|
|
||||||
@@ -158,6 +183,12 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
|
||||||
+raw_secontext_short_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ return get_secontext_field_fd(fd, SECONTEXT_TYPE);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static char *
|
|
||||||
raw_secontext_full_pid(pid_t pid)
|
|
||||||
{
|
|
||||||
int saved_errno = errno;
|
|
||||||
@@ -205,6 +236,15 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
+secontext_full_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *context = raw_secontext_full_fd(fd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return FORMAT_SPACE_BEFORE(context);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
secontext_full_pid(pid_t pid)
|
|
||||||
{
|
|
||||||
return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid));
|
|
||||||
@@ -228,6 +268,15 @@
|
|
||||||
errno = saved_errno;
|
|
||||||
return FORMAT_SPACE_BEFORE(context);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
+secontext_short_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *context = raw_secontext_short_fd(fd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return FORMAT_SPACE_BEFORE(context);
|
|
||||||
+}
|
|
||||||
|
|
||||||
char *
|
|
||||||
secontext_short_pid(pid_t pid)
|
|
||||||
Index: strace-5.18/tests/secontext.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests/secontext.h 2022-07-12 18:17:36.747379459 +0200
|
|
||||||
+++ strace-5.18/tests/secontext.h 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -9,9 +9,11 @@
|
|
||||||
#include "xmalloc.h"
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
+char *secontext_full_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_full_file(const char *, bool) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC;
|
|
||||||
|
|
||||||
+char *secontext_short_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_short_file(const char *, bool) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC;
|
|
||||||
|
|
||||||
@@ -30,6 +32,7 @@
|
|
||||||
*/
|
|
||||||
char *get_secontext_field(const char *full_context, enum secontext_field field);
|
|
||||||
|
|
||||||
+char *get_secontext_field_fd(int fd, enum secontext_field field);
|
|
||||||
char *get_secontext_field_file(const char *file, enum secontext_field field);
|
|
||||||
|
|
||||||
void reset_secontext_file(const char *file);
|
|
||||||
@@ -44,6 +47,7 @@
|
|
||||||
# else
|
|
||||||
# define SECONTEXT_FILE(filename) secontext_full_file(filename, false)
|
|
||||||
# endif
|
|
||||||
+# define SECONTEXT_FD(fd) secontext_full_fd(fd)
|
|
||||||
# define SECONTEXT_PID(pid) secontext_full_pid(pid)
|
|
||||||
|
|
||||||
# else
|
|
||||||
@@ -53,6 +57,7 @@
|
|
||||||
# else
|
|
||||||
# define SECONTEXT_FILE(filename) secontext_short_file(filename, false)
|
|
||||||
# endif
|
|
||||||
+# define SECONTEXT_FD(fd) secontext_short_fd(fd)
|
|
||||||
# define SECONTEXT_PID(pid) secontext_short_pid(pid)
|
|
||||||
|
|
||||||
# endif
|
|
||||||
@@ -65,6 +70,12 @@
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
static inline char *
|
|
||||||
+get_secontext_field_fd(int fd, enum secontext_field field)
|
|
||||||
+{
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline char *
|
|
||||||
get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
@@ -81,6 +92,7 @@
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
+# define SECONTEXT_FD(fd) xstrdup("")
|
|
||||||
# define SECONTEXT_FILE(filename) xstrdup("")
|
|
||||||
# define SECONTEXT_PID(pid) xstrdup("")
|
|
||||||
|
|
||||||
Index: strace-5.18/tests/sockname.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests/sockname.c 2022-07-12 18:17:36.748379448 +0200
|
|
||||||
+++ strace-5.18/tests/sockname.c 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -18,6 +18,8 @@
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/un.h>
|
|
||||||
|
|
||||||
+#include "secontext.h"
|
|
||||||
+
|
|
||||||
#ifndef TEST_SYSCALL_NAME
|
|
||||||
# error TEST_SYSCALL_NAME must be defined
|
|
||||||
#endif
|
|
||||||
@@ -59,14 +61,19 @@
|
|
||||||
*plen = sizeof(struct sockaddr_un);
|
|
||||||
struct sockaddr_un *addr = tail_alloc(*plen);
|
|
||||||
|
|
||||||
+ char *my_secontext = SECONTEXT_PID_MY();
|
|
||||||
+ char *fd_secontext = SECONTEXT_FD(fd);
|
|
||||||
+
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
int rc = TEST_SYSCALL_NAME(fd PREFIX_S_ARGS, (void *) addr,
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%s\"%s}"
|
|
||||||
", [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR, addr->sun_path,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
(int) sizeof(struct sockaddr_un), (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
memset(addr, 0, sizeof(*addr));
|
|
||||||
@@ -75,28 +82,34 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%s\"%s}"
|
|
||||||
", [%d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR, addr->sun_path,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
(int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr, 0 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, NULL%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr, SUFFIX_STR,
|
|
||||||
- sprintrc(rc));
|
|
||||||
+ printf("%s%s(%d%s%s, %p, NULL%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR,
|
|
||||||
+ addr, SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_S_ARGS, 0, 0 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, NULL, NULL%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, rc == -1 ? PREFIX_F_STR : PREFIX_S_STR,
|
|
||||||
+ printf("%s%s(%d%s%s, NULL, NULL%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext,
|
|
||||||
+ rc == -1 ? PREFIX_F_STR : PREFIX_S_STR,
|
|
||||||
SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
|
|
||||||
plen + 1 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, %p%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
|
|
||||||
+ printf("%s%s(%d%s%s, %p, %p%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR, addr,
|
|
||||||
plen + 1, SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
const size_t offsetof_sun_path = offsetof(struct sockaddr_un, sun_path);
|
|
||||||
@@ -108,8 +121,9 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX}, [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR,
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX}, [%d => %d]%s) = %d\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
(int) offsetof_sun_path, (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
++addr;
|
|
||||||
@@ -121,17 +135,19 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%.*s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%.*s\"%s}"
|
|
||||||
", [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
(int) (sizeof(struct sockaddr) - offsetof_sun_path),
|
|
||||||
- addr->sun_path, (int) sizeof(struct sockaddr),
|
|
||||||
- (int) *plen, SUFFIX_STR, rc);
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
+ (int) sizeof(struct sockaddr), (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, [%d]%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
|
|
||||||
+ printf("%s%s(%d%s%s, %p, [%d]%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR, addr,
|
|
||||||
*plen, SUFFIX_STR, sprintrc(rc));
|
|
||||||
}
|
|
||||||
Index: strace-5.18/tests-m32/secontext.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-m32/secontext.c 2022-07-12 18:17:36.747379459 +0200
|
|
||||||
+++ strace-5.18/tests-m32/secontext.c 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -141,6 +141,21 @@
|
|
||||||
return full_secontext;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static char *
|
|
||||||
+raw_secontext_full_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *full_secontext = NULL;
|
|
||||||
+ char *secontext;
|
|
||||||
+
|
|
||||||
+ if (fgetfilecon(fd, &secontext) >= 0) {
|
|
||||||
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
|
|
||||||
+ freecon(secontext);
|
|
||||||
+ }
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return full_secontext;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
char *
|
|
||||||
get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
{
|
|
||||||
@@ -151,6 +166,16 @@
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
+char *
|
|
||||||
+get_secontext_field_fd(int fd, enum secontext_field field)
|
|
||||||
+{
|
|
||||||
+ char *ctx = raw_secontext_full_fd(fd);
|
|
||||||
+ char *type = get_secontext_field(ctx, field);
|
|
||||||
+ free(ctx);
|
|
||||||
+
|
|
||||||
+ return type;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static char *
|
|
||||||
raw_secontext_short_file(const char *filename)
|
|
||||||
{
|
|
||||||
@@ -158,6 +183,12 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
|
||||||
+raw_secontext_short_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ return get_secontext_field_fd(fd, SECONTEXT_TYPE);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static char *
|
|
||||||
raw_secontext_full_pid(pid_t pid)
|
|
||||||
{
|
|
||||||
int saved_errno = errno;
|
|
||||||
@@ -205,6 +236,15 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
+secontext_full_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *context = raw_secontext_full_fd(fd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return FORMAT_SPACE_BEFORE(context);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
secontext_full_pid(pid_t pid)
|
|
||||||
{
|
|
||||||
return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid));
|
|
||||||
@@ -228,6 +268,15 @@
|
|
||||||
errno = saved_errno;
|
|
||||||
return FORMAT_SPACE_BEFORE(context);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
+secontext_short_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *context = raw_secontext_short_fd(fd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return FORMAT_SPACE_BEFORE(context);
|
|
||||||
+}
|
|
||||||
|
|
||||||
char *
|
|
||||||
secontext_short_pid(pid_t pid)
|
|
||||||
Index: strace-5.18/tests-m32/secontext.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-m32/secontext.h 2022-07-12 18:17:36.747379459 +0200
|
|
||||||
+++ strace-5.18/tests-m32/secontext.h 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -9,9 +9,11 @@
|
|
||||||
#include "xmalloc.h"
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
+char *secontext_full_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_full_file(const char *, bool) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC;
|
|
||||||
|
|
||||||
+char *secontext_short_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_short_file(const char *, bool) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC;
|
|
||||||
|
|
||||||
@@ -30,6 +32,7 @@
|
|
||||||
*/
|
|
||||||
char *get_secontext_field(const char *full_context, enum secontext_field field);
|
|
||||||
|
|
||||||
+char *get_secontext_field_fd(int fd, enum secontext_field field);
|
|
||||||
char *get_secontext_field_file(const char *file, enum secontext_field field);
|
|
||||||
|
|
||||||
void reset_secontext_file(const char *file);
|
|
||||||
@@ -44,6 +47,7 @@
|
|
||||||
# else
|
|
||||||
# define SECONTEXT_FILE(filename) secontext_full_file(filename, false)
|
|
||||||
# endif
|
|
||||||
+# define SECONTEXT_FD(fd) secontext_full_fd(fd)
|
|
||||||
# define SECONTEXT_PID(pid) secontext_full_pid(pid)
|
|
||||||
|
|
||||||
# else
|
|
||||||
@@ -53,6 +57,7 @@
|
|
||||||
# else
|
|
||||||
# define SECONTEXT_FILE(filename) secontext_short_file(filename, false)
|
|
||||||
# endif
|
|
||||||
+# define SECONTEXT_FD(fd) secontext_short_fd(fd)
|
|
||||||
# define SECONTEXT_PID(pid) secontext_short_pid(pid)
|
|
||||||
|
|
||||||
# endif
|
|
||||||
@@ -65,6 +70,12 @@
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
static inline char *
|
|
||||||
+get_secontext_field_fd(int fd, enum secontext_field field)
|
|
||||||
+{
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline char *
|
|
||||||
get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
@@ -81,6 +92,7 @@
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
+# define SECONTEXT_FD(fd) xstrdup("")
|
|
||||||
# define SECONTEXT_FILE(filename) xstrdup("")
|
|
||||||
# define SECONTEXT_PID(pid) xstrdup("")
|
|
||||||
|
|
||||||
Index: strace-5.18/tests-m32/sockname.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-m32/sockname.c 2022-07-12 18:17:36.748379448 +0200
|
|
||||||
+++ strace-5.18/tests-m32/sockname.c 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -18,6 +18,8 @@
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/un.h>
|
|
||||||
|
|
||||||
+#include "secontext.h"
|
|
||||||
+
|
|
||||||
#ifndef TEST_SYSCALL_NAME
|
|
||||||
# error TEST_SYSCALL_NAME must be defined
|
|
||||||
#endif
|
|
||||||
@@ -59,14 +61,19 @@
|
|
||||||
*plen = sizeof(struct sockaddr_un);
|
|
||||||
struct sockaddr_un *addr = tail_alloc(*plen);
|
|
||||||
|
|
||||||
+ char *my_secontext = SECONTEXT_PID_MY();
|
|
||||||
+ char *fd_secontext = SECONTEXT_FD(fd);
|
|
||||||
+
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
int rc = TEST_SYSCALL_NAME(fd PREFIX_S_ARGS, (void *) addr,
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%s\"%s}"
|
|
||||||
", [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR, addr->sun_path,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
(int) sizeof(struct sockaddr_un), (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
memset(addr, 0, sizeof(*addr));
|
|
||||||
@@ -75,28 +82,34 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%s\"%s}"
|
|
||||||
", [%d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR, addr->sun_path,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
(int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr, 0 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, NULL%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr, SUFFIX_STR,
|
|
||||||
- sprintrc(rc));
|
|
||||||
+ printf("%s%s(%d%s%s, %p, NULL%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR,
|
|
||||||
+ addr, SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_S_ARGS, 0, 0 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, NULL, NULL%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, rc == -1 ? PREFIX_F_STR : PREFIX_S_STR,
|
|
||||||
+ printf("%s%s(%d%s%s, NULL, NULL%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext,
|
|
||||||
+ rc == -1 ? PREFIX_F_STR : PREFIX_S_STR,
|
|
||||||
SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
|
|
||||||
plen + 1 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, %p%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
|
|
||||||
+ printf("%s%s(%d%s%s, %p, %p%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR, addr,
|
|
||||||
plen + 1, SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
const size_t offsetof_sun_path = offsetof(struct sockaddr_un, sun_path);
|
|
||||||
@@ -108,8 +121,9 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX}, [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR,
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX}, [%d => %d]%s) = %d\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
(int) offsetof_sun_path, (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
++addr;
|
|
||||||
@@ -121,17 +135,19 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%.*s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%.*s\"%s}"
|
|
||||||
", [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
(int) (sizeof(struct sockaddr) - offsetof_sun_path),
|
|
||||||
- addr->sun_path, (int) sizeof(struct sockaddr),
|
|
||||||
- (int) *plen, SUFFIX_STR, rc);
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
+ (int) sizeof(struct sockaddr), (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, [%d]%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
|
|
||||||
+ printf("%s%s(%d%s%s, %p, [%d]%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR, addr,
|
|
||||||
*plen, SUFFIX_STR, sprintrc(rc));
|
|
||||||
}
|
|
||||||
Index: strace-5.18/tests-mx32/secontext.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-mx32/secontext.c 2022-07-12 18:17:36.747379459 +0200
|
|
||||||
+++ strace-5.18/tests-mx32/secontext.c 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -141,6 +141,21 @@
|
|
||||||
return full_secontext;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static char *
|
|
||||||
+raw_secontext_full_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *full_secontext = NULL;
|
|
||||||
+ char *secontext;
|
|
||||||
+
|
|
||||||
+ if (fgetfilecon(fd, &secontext) >= 0) {
|
|
||||||
+ full_secontext = strip_trailing_newlines(xstrdup(secontext));
|
|
||||||
+ freecon(secontext);
|
|
||||||
+ }
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return full_secontext;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
char *
|
|
||||||
get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
{
|
|
||||||
@@ -151,6 +166,16 @@
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
+char *
|
|
||||||
+get_secontext_field_fd(int fd, enum secontext_field field)
|
|
||||||
+{
|
|
||||||
+ char *ctx = raw_secontext_full_fd(fd);
|
|
||||||
+ char *type = get_secontext_field(ctx, field);
|
|
||||||
+ free(ctx);
|
|
||||||
+
|
|
||||||
+ return type;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static char *
|
|
||||||
raw_secontext_short_file(const char *filename)
|
|
||||||
{
|
|
||||||
@@ -158,6 +183,12 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
|
||||||
+raw_secontext_short_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ return get_secontext_field_fd(fd, SECONTEXT_TYPE);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static char *
|
|
||||||
raw_secontext_full_pid(pid_t pid)
|
|
||||||
{
|
|
||||||
int saved_errno = errno;
|
|
||||||
@@ -205,6 +236,15 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
+secontext_full_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *context = raw_secontext_full_fd(fd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return FORMAT_SPACE_BEFORE(context);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
secontext_full_pid(pid_t pid)
|
|
||||||
{
|
|
||||||
return FORMAT_SPACE_AFTER(raw_secontext_full_pid(pid));
|
|
||||||
@@ -228,6 +268,15 @@
|
|
||||||
errno = saved_errno;
|
|
||||||
return FORMAT_SPACE_BEFORE(context);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+char *
|
|
||||||
+secontext_short_fd(int fd)
|
|
||||||
+{
|
|
||||||
+ int saved_errno = errno;
|
|
||||||
+ char *context = raw_secontext_short_fd(fd);
|
|
||||||
+ errno = saved_errno;
|
|
||||||
+ return FORMAT_SPACE_BEFORE(context);
|
|
||||||
+}
|
|
||||||
|
|
||||||
char *
|
|
||||||
secontext_short_pid(pid_t pid)
|
|
||||||
Index: strace-5.18/tests-mx32/secontext.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-mx32/secontext.h 2022-07-12 18:17:36.747379459 +0200
|
|
||||||
+++ strace-5.18/tests-mx32/secontext.h 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -9,9 +9,11 @@
|
|
||||||
#include "xmalloc.h"
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
+char *secontext_full_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_full_file(const char *, bool) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_full_pid(pid_t) ATTRIBUTE_MALLOC;
|
|
||||||
|
|
||||||
+char *secontext_short_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_short_file(const char *, bool) ATTRIBUTE_MALLOC;
|
|
||||||
char *secontext_short_pid(pid_t) ATTRIBUTE_MALLOC;
|
|
||||||
|
|
||||||
@@ -30,6 +32,7 @@
|
|
||||||
*/
|
|
||||||
char *get_secontext_field(const char *full_context, enum secontext_field field);
|
|
||||||
|
|
||||||
+char *get_secontext_field_fd(int fd, enum secontext_field field);
|
|
||||||
char *get_secontext_field_file(const char *file, enum secontext_field field);
|
|
||||||
|
|
||||||
void reset_secontext_file(const char *file);
|
|
||||||
@@ -44,6 +47,7 @@
|
|
||||||
# else
|
|
||||||
# define SECONTEXT_FILE(filename) secontext_full_file(filename, false)
|
|
||||||
# endif
|
|
||||||
+# define SECONTEXT_FD(fd) secontext_full_fd(fd)
|
|
||||||
# define SECONTEXT_PID(pid) secontext_full_pid(pid)
|
|
||||||
|
|
||||||
# else
|
|
||||||
@@ -53,6 +57,7 @@
|
|
||||||
# else
|
|
||||||
# define SECONTEXT_FILE(filename) secontext_short_file(filename, false)
|
|
||||||
# endif
|
|
||||||
+# define SECONTEXT_FD(fd) secontext_short_fd(fd)
|
|
||||||
# define SECONTEXT_PID(pid) secontext_short_pid(pid)
|
|
||||||
|
|
||||||
# endif
|
|
||||||
@@ -65,6 +70,12 @@
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
static inline char *
|
|
||||||
+get_secontext_field_fd(int fd, enum secontext_field field)
|
|
||||||
+{
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static inline char *
|
|
||||||
get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
@@ -81,6 +92,7 @@
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
+# define SECONTEXT_FD(fd) xstrdup("")
|
|
||||||
# define SECONTEXT_FILE(filename) xstrdup("")
|
|
||||||
# define SECONTEXT_PID(pid) xstrdup("")
|
|
||||||
|
|
||||||
Index: strace-5.18/tests-mx32/sockname.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-mx32/sockname.c 2022-07-12 18:17:36.748379448 +0200
|
|
||||||
+++ strace-5.18/tests-mx32/sockname.c 2022-07-12 18:20:18.496470519 +0200
|
|
||||||
@@ -18,6 +18,8 @@
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/un.h>
|
|
||||||
|
|
||||||
+#include "secontext.h"
|
|
||||||
+
|
|
||||||
#ifndef TEST_SYSCALL_NAME
|
|
||||||
# error TEST_SYSCALL_NAME must be defined
|
|
||||||
#endif
|
|
||||||
@@ -59,14 +61,19 @@
|
|
||||||
*plen = sizeof(struct sockaddr_un);
|
|
||||||
struct sockaddr_un *addr = tail_alloc(*plen);
|
|
||||||
|
|
||||||
+ char *my_secontext = SECONTEXT_PID_MY();
|
|
||||||
+ char *fd_secontext = SECONTEXT_FD(fd);
|
|
||||||
+
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
int rc = TEST_SYSCALL_NAME(fd PREFIX_S_ARGS, (void *) addr,
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%s\"%s}"
|
|
||||||
", [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR, addr->sun_path,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
(int) sizeof(struct sockaddr_un), (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
memset(addr, 0, sizeof(*addr));
|
|
||||||
@@ -75,28 +82,34 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%s\"%s}"
|
|
||||||
", [%d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR, addr->sun_path,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
(int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr, 0 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, NULL%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr, SUFFIX_STR,
|
|
||||||
- sprintrc(rc));
|
|
||||||
+ printf("%s%s(%d%s%s, %p, NULL%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR,
|
|
||||||
+ addr, SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_S_ARGS, 0, 0 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, NULL, NULL%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, rc == -1 ? PREFIX_F_STR : PREFIX_S_STR,
|
|
||||||
+ printf("%s%s(%d%s%s, NULL, NULL%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext,
|
|
||||||
+ rc == -1 ? PREFIX_F_STR : PREFIX_S_STR,
|
|
||||||
SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
|
|
||||||
plen + 1 SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, %p%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
|
|
||||||
+ printf("%s%s(%d%s%s, %p, %p%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR, addr,
|
|
||||||
plen + 1, SUFFIX_STR, sprintrc(rc));
|
|
||||||
|
|
||||||
const size_t offsetof_sun_path = offsetof(struct sockaddr_un, sun_path);
|
|
||||||
@@ -108,8 +121,9 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX}, [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR,
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX}, [%d => %d]%s) = %d\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
(int) offsetof_sun_path, (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
++addr;
|
|
||||||
@@ -121,17 +135,19 @@
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
if (rc < 0)
|
|
||||||
perror_msg_and_skip(TEST_SYSCALL_STR);
|
|
||||||
- printf("%s(%d%s, {sa_family=AF_UNIX, sun_path=\"%.*s\"}"
|
|
||||||
+ printf("%s%s(%d%s%s, {sa_family=AF_UNIX, sun_path=\"%.*s\"%s}"
|
|
||||||
", [%d => %d]%s) = %d\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_S_STR,
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_S_STR,
|
|
||||||
(int) (sizeof(struct sockaddr) - offsetof_sun_path),
|
|
||||||
- addr->sun_path, (int) sizeof(struct sockaddr),
|
|
||||||
- (int) *plen, SUFFIX_STR, rc);
|
|
||||||
+ addr->sun_path, SECONTEXT_FILE(addr->sun_path),
|
|
||||||
+ (int) sizeof(struct sockaddr), (int) *plen, SUFFIX_STR, rc);
|
|
||||||
|
|
||||||
PREPARE_TEST_SYSCALL_INVOCATION;
|
|
||||||
rc = TEST_SYSCALL_NAME(fd PREFIX_F_ARGS, (void *) addr,
|
|
||||||
plen SUFFIX_ARGS);
|
|
||||||
- printf("%s(%d%s, %p, [%d]%s) = %s\n",
|
|
||||||
- TEST_SYSCALL_STR, fd, PREFIX_F_STR, addr,
|
|
||||||
+ printf("%s%s(%d%s%s, %p, [%d]%s) = %s\n",
|
|
||||||
+ my_secontext,
|
|
||||||
+ TEST_SYSCALL_STR, fd, fd_secontext, PREFIX_F_STR, addr,
|
|
||||||
*plen, SUFFIX_STR, sprintrc(rc));
|
|
||||||
}
|
|
@ -1,374 +0,0 @@
|
|||||||
From 676979fa9cc7920e5e4d547814f9c0edb597fa0d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Thu, 30 Jun 2022 16:01:05 +0200
|
|
||||||
Subject: [PATCH] pathtrace, util: do not print " (deleted)" as part of the
|
|
||||||
path
|
|
||||||
|
|
||||||
In order to allow to discern the unlinked paths from the paths that
|
|
||||||
do indeed end with " (deleted)".
|
|
||||||
|
|
||||||
* src/defs.h (getfdpath_pid): Add deleted parameter.
|
|
||||||
(getfdpath): Pass NULL as deleted parameter to getfdpath_pid.
|
|
||||||
* src/largefile_wrappers.h (lstat_file): New macro.
|
|
||||||
* src/pathtrace.c: Include <sys/stat.h>, <sys/types.h>, <unistd.h>,
|
|
||||||
and "largefile_wrappers.h".
|
|
||||||
(getfdpath_pid): Add deleted parameter, check if path ends with
|
|
||||||
" (deleted)", and if it is, try to figure out if it is a part
|
|
||||||
of the path by comparing device/inode numbers of the file procfs
|
|
||||||
link resolves into and the file pointed by the path read; strip
|
|
||||||
" (deleted)"; set deleted (if it is non-NULL) to true if the fd
|
|
||||||
is turned out to be deleted and to false otherwise.
|
|
||||||
* src/util.c (print_quoted_string_in_angle_brackets): Add deleted
|
|
||||||
parameter, print "(deleted)" after the closing angle bracket if it is
|
|
||||||
non-NULL.
|
|
||||||
(printfd_pid): Add deleted local variable, pass it to getfdpath_pid
|
|
||||||
and print_quoted_string_in_angle_brackets calls.
|
|
||||||
* tests/fchmod.c: Add checks for a file with " (deleted)" in the path,
|
|
||||||
update expected output.
|
|
||||||
* NEWS: Mention the change.
|
|
||||||
---
|
|
||||||
NEWS | 5 +++++
|
|
||||||
src/defs.h | 5 +++--
|
|
||||||
src/largefile_wrappers.h | 2 ++
|
|
||||||
src/pathtrace.c | 48 +++++++++++++++++++++++++++++++++++++++++++++---
|
|
||||||
src/util.c | 10 +++++++---
|
|
||||||
tests/fchmod.c | 47 +++++++++++++++++++++++++++++++++++++++++++----
|
|
||||||
6 files changed, 105 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
Index: strace-5.18/NEWS
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/NEWS 2022-07-13 12:52:48.219784860 +0200
|
|
||||||
+++ strace-5.18/NEWS 2022-07-13 12:52:48.451782122 +0200
|
|
||||||
@@ -1,6 +1,11 @@
|
|
||||||
Noteworthy changes in release 5.18 (2022-06-18)
|
|
||||||
===============================================
|
|
||||||
|
|
||||||
+* Changes in behaviour
|
|
||||||
+ * The "(deleted)" marker for unlinked paths of file descriptors is now printed
|
|
||||||
+ outside angle brackets; the matching of unlinked paths of file descriptors
|
|
||||||
+ no longer includes the " (deleted)" part into consideration.
|
|
||||||
+
|
|
||||||
* Improvements
|
|
||||||
* Added an interface of raising des Strausses awareness.
|
|
||||||
* Added --tips option to print strace tips, tricks, and tweaks
|
|
||||||
Index: strace-5.18/src/defs.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/defs.h 2022-07-13 12:52:29.405006910 +0200
|
|
||||||
+++ strace-5.18/src/defs.h 2022-07-13 12:52:54.532710356 +0200
|
|
||||||
@@ -785,12 +785,13 @@
|
|
||||||
return pathtrace_match_set(tcp, &global_path_set);
|
|
||||||
}
|
|
||||||
|
|
||||||
-extern int getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize);
|
|
||||||
+extern int getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize,
|
|
||||||
+ bool *deleted);
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
getfdpath(struct tcb *tcp, int fd, char *buf, unsigned bufsize)
|
|
||||||
{
|
|
||||||
- return getfdpath_pid(tcp->pid, fd, buf, bufsize);
|
|
||||||
+ return getfdpath_pid(tcp->pid, fd, buf, bufsize, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern unsigned long getfdinode(struct tcb *, int);
|
|
||||||
Index: strace-5.18/src/largefile_wrappers.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/largefile_wrappers.h 2022-07-13 12:52:29.405006910 +0200
|
|
||||||
+++ strace-5.18/src/largefile_wrappers.h 2022-07-13 12:52:48.451782122 +0200
|
|
||||||
@@ -31,6 +31,7 @@
|
|
||||||
# endif
|
|
||||||
# define fstat_fd fstat64
|
|
||||||
# define strace_stat_t struct stat64
|
|
||||||
+# define lstat_file lstat64
|
|
||||||
# define stat_file stat64
|
|
||||||
# define struct_dirent struct dirent64
|
|
||||||
# define read_dir readdir64
|
|
||||||
@@ -42,6 +43,7 @@
|
|
||||||
# define fcntl_fd fcntl
|
|
||||||
# define fstat_fd fstat
|
|
||||||
# define strace_stat_t struct stat
|
|
||||||
+# define lstat_file lstat
|
|
||||||
# define stat_file stat
|
|
||||||
# define struct_dirent struct dirent
|
|
||||||
# define read_dir readdir
|
|
||||||
Index: strace-5.18/src/pathtrace.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/pathtrace.c 2022-07-13 12:52:29.405006910 +0200
|
|
||||||
+++ strace-5.18/src/pathtrace.c 2022-07-13 12:52:54.532710356 +0200
|
|
||||||
@@ -10,7 +10,11 @@
|
|
||||||
#include "defs.h"
|
|
||||||
#include <limits.h>
|
|
||||||
#include <poll.h>
|
|
||||||
+#include <sys/stat.h>
|
|
||||||
+#include <sys/types.h>
|
|
||||||
+#include <unistd.h>
|
|
||||||
|
|
||||||
+#include "largefile_wrappers.h"
|
|
||||||
#include "number_set.h"
|
|
||||||
#include "sen.h"
|
|
||||||
#include "xstring.h"
|
|
||||||
@@ -77,7 +81,7 @@
|
|
||||||
* Get path associated with fd of a process with pid.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
-getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize)
|
|
||||||
+getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize, bool *deleted)
|
|
||||||
{
|
|
||||||
char linkpath[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3];
|
|
||||||
ssize_t n;
|
|
||||||
@@ -91,12 +95,50 @@
|
|
||||||
|
|
||||||
xsprintf(linkpath, "/proc/%u/fd/%u", proc_pid, fd);
|
|
||||||
n = readlink(linkpath, buf, bufsize - 1);
|
|
||||||
+ if (n < 0)
|
|
||||||
+ goto end;
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* NB: if buf is too small, readlink doesn't fail,
|
|
||||||
* it returns truncated result (IOW: n == bufsize - 1).
|
|
||||||
*/
|
|
||||||
- if (n >= 0)
|
|
||||||
- buf[n] = '\0';
|
|
||||||
+ buf[n] = '\0';
|
|
||||||
+ if (deleted)
|
|
||||||
+ *deleted = false;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Try to figure out if the kernel has appended " (deleted)"
|
|
||||||
+ * to the end of a potentially unlinked path and set deleted
|
|
||||||
+ * if it is the case.
|
|
||||||
+ */
|
|
||||||
+ static const char del_sfx[] = " (deleted)";
|
|
||||||
+ if ((size_t) n <= sizeof(del_sfx))
|
|
||||||
+ goto end;
|
|
||||||
+
|
|
||||||
+ char *del = buf + n + 1 - sizeof(del_sfx);
|
|
||||||
+
|
|
||||||
+ if (memcmp(del, del_sfx, sizeof(del_sfx)))
|
|
||||||
+ goto end;
|
|
||||||
+
|
|
||||||
+ strace_stat_t st_link;
|
|
||||||
+ strace_stat_t st_path;
|
|
||||||
+ int rc = stat_file(linkpath, &st_link);
|
|
||||||
+
|
|
||||||
+ if (rc)
|
|
||||||
+ goto end;
|
|
||||||
+
|
|
||||||
+ rc = lstat_file(buf, &st_path);
|
|
||||||
+
|
|
||||||
+ if (rc ||
|
|
||||||
+ (st_link.st_ino != st_path.st_ino) ||
|
|
||||||
+ (st_link.st_dev != st_path.st_dev)) {
|
|
||||||
+ *del = '\0';
|
|
||||||
+ n = del - buf + 1;
|
|
||||||
+ if (deleted)
|
|
||||||
+ *deleted = true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+end:
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
Index: strace-5.18/src/util.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/util.c 2022-07-13 12:52:47.989787575 +0200
|
|
||||||
+++ strace-5.18/src/util.c 2022-07-13 12:52:48.452782111 +0200
|
|
||||||
@@ -735,12 +735,15 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
-print_quoted_string_in_angle_brackets(const char *str)
|
|
||||||
+print_quoted_string_in_angle_brackets(const char *str, const bool deleted)
|
|
||||||
{
|
|
||||||
tprints("<");
|
|
||||||
print_quoted_string_ex(str, strlen(str),
|
|
||||||
QUOTE_OMIT_LEADING_TRAILING_QUOTES, "<>");
|
|
||||||
tprints(">");
|
|
||||||
+
|
|
||||||
+ if (deleted)
|
|
||||||
+ tprints("(deleted)");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
@@ -749,8 +752,9 @@
|
|
||||||
PRINT_VAL_D(fd);
|
|
||||||
|
|
||||||
char path[PATH_MAX + 1];
|
|
||||||
+ bool deleted;
|
|
||||||
if (pid > 0 && !number_set_array_is_empty(decode_fd_set, 0)
|
|
||||||
- && getfdpath_pid(pid, fd, path, sizeof(path)) >= 0) {
|
|
||||||
+ && getfdpath_pid(pid, fd, path, sizeof(path), &deleted) >= 0) {
|
|
||||||
if (is_number_in_set(DECODE_FD_SOCKET, decode_fd_set) &&
|
|
||||||
printsocket(tcp, fd, path))
|
|
||||||
goto printed;
|
|
||||||
@@ -761,7 +765,7 @@
|
|
||||||
printpidfd(pid, fd, path))
|
|
||||||
goto printed;
|
|
||||||
if (is_number_in_set(DECODE_FD_PATH, decode_fd_set))
|
|
||||||
- print_quoted_string_in_angle_brackets(path);
|
|
||||||
+ print_quoted_string_in_angle_brackets(path, deleted);
|
|
||||||
printed: ;
|
|
||||||
}
|
|
||||||
|
|
||||||
Index: strace-5.18/tests/fchmod.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests/fchmod.c 2022-07-13 12:52:29.405006910 +0200
|
|
||||||
+++ strace-5.18/tests/fchmod.c 2022-07-13 12:52:48.452782111 +0200
|
|
||||||
@@ -35,10 +35,17 @@
|
|
||||||
(void) unlink(sample);
|
|
||||||
int fd = open(sample, O_CREAT|O_RDONLY, 0400);
|
|
||||||
if (fd == -1)
|
|
||||||
- perror_msg_and_fail("open");
|
|
||||||
+ perror_msg_and_fail("open(\"%s\")", sample);
|
|
||||||
+
|
|
||||||
+ static const char sample_del[] = "fchmod_sample_file (deleted)";
|
|
||||||
+ (void) unlink(sample_del);
|
|
||||||
+ int fd_del = open(sample_del, O_CREAT|O_RDONLY, 0400);
|
|
||||||
+ if (fd_del == -1)
|
|
||||||
+ perror_msg_and_fail("open(\"%s\")", sample);
|
|
||||||
|
|
||||||
# ifdef YFLAG
|
|
||||||
char *sample_realpath = get_fd_path(fd);
|
|
||||||
+ char *sample_del_realpath = get_fd_path(fd_del);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
const char *sample_secontext = SECONTEXT_FILE(sample);
|
|
||||||
@@ -56,12 +63,27 @@
|
|
||||||
sample_secontext,
|
|
||||||
sprintrc(rc));
|
|
||||||
|
|
||||||
+ const char *sample_del_secontext = SECONTEXT_FILE(sample_del);
|
|
||||||
+ rc = syscall(__NR_fchmod, fd_del, 0600);
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ printf("%s%s(%d<%s>%s, 0600) = %s\n",
|
|
||||||
+# else
|
|
||||||
+ printf("%s%s(%d%s, 0600) = %s\n",
|
|
||||||
+# endif
|
|
||||||
+ my_secontext, "fchmod",
|
|
||||||
+ fd_del,
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ sample_del_realpath,
|
|
||||||
+# endif
|
|
||||||
+ sample_del_secontext,
|
|
||||||
+ sprintrc(rc));
|
|
||||||
+
|
|
||||||
if (unlink(sample))
|
|
||||||
- perror_msg_and_fail("unlink");
|
|
||||||
+ perror_msg_and_fail("unlink(\"%s\")", sample);
|
|
||||||
|
|
||||||
rc = syscall(__NR_fchmod, fd, 051);
|
|
||||||
# ifdef YFLAG
|
|
||||||
- printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n",
|
|
||||||
+ printf("%s%s(%d<%s>(deleted)%s, 051) = %s\n",
|
|
||||||
# else
|
|
||||||
printf("%s%s(%d%s, 051) = %s\n",
|
|
||||||
# endif
|
|
||||||
@@ -73,9 +95,26 @@
|
|
||||||
sample_secontext,
|
|
||||||
sprintrc(rc));
|
|
||||||
|
|
||||||
+ if (unlink(sample_del))
|
|
||||||
+ perror_msg_and_fail("unlink(\"%s\")", sample_del);
|
|
||||||
+
|
|
||||||
+ rc = syscall(__NR_fchmod, fd_del, 051);
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ printf("%s%s(%d<%s>(deleted)%s, 051) = %s\n",
|
|
||||||
+# else
|
|
||||||
+ printf("%s%s(%d%s, 051) = %s\n",
|
|
||||||
+# endif
|
|
||||||
+ my_secontext, "fchmod",
|
|
||||||
+ fd_del,
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ sample_del_realpath,
|
|
||||||
+# endif
|
|
||||||
+ sample_del_secontext,
|
|
||||||
+ sprintrc(rc));
|
|
||||||
+
|
|
||||||
rc = syscall(__NR_fchmod, fd, 004);
|
|
||||||
# ifdef YFLAG
|
|
||||||
- printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n",
|
|
||||||
+ printf("%s%s(%d<%s>(deleted)%s, 004) = %s\n",
|
|
||||||
# else
|
|
||||||
printf("%s%s(%d%s, 004) = %s\n",
|
|
||||||
# endif
|
|
||||||
Index: strace-5.18/tests-m32/fchmod.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-m32/fchmod.c 2022-07-13 12:52:29.405006910 +0200
|
|
||||||
+++ strace-5.18/tests-m32/fchmod.c 2022-07-13 12:52:48.452782111 +0200
|
|
||||||
@@ -35,10 +35,17 @@
|
|
||||||
(void) unlink(sample);
|
|
||||||
int fd = open(sample, O_CREAT|O_RDONLY, 0400);
|
|
||||||
if (fd == -1)
|
|
||||||
- perror_msg_and_fail("open");
|
|
||||||
+ perror_msg_and_fail("open(\"%s\")", sample);
|
|
||||||
+
|
|
||||||
+ static const char sample_del[] = "fchmod_sample_file (deleted)";
|
|
||||||
+ (void) unlink(sample_del);
|
|
||||||
+ int fd_del = open(sample_del, O_CREAT|O_RDONLY, 0400);
|
|
||||||
+ if (fd_del == -1)
|
|
||||||
+ perror_msg_and_fail("open(\"%s\")", sample);
|
|
||||||
|
|
||||||
# ifdef YFLAG
|
|
||||||
char *sample_realpath = get_fd_path(fd);
|
|
||||||
+ char *sample_del_realpath = get_fd_path(fd_del);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
const char *sample_secontext = SECONTEXT_FILE(sample);
|
|
||||||
@@ -56,12 +63,27 @@
|
|
||||||
sample_secontext,
|
|
||||||
sprintrc(rc));
|
|
||||||
|
|
||||||
+ const char *sample_del_secontext = SECONTEXT_FILE(sample_del);
|
|
||||||
+ rc = syscall(__NR_fchmod, fd_del, 0600);
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ printf("%s%s(%d<%s>%s, 0600) = %s\n",
|
|
||||||
+# else
|
|
||||||
+ printf("%s%s(%d%s, 0600) = %s\n",
|
|
||||||
+# endif
|
|
||||||
+ my_secontext, "fchmod",
|
|
||||||
+ fd_del,
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ sample_del_realpath,
|
|
||||||
+# endif
|
|
||||||
+ sample_del_secontext,
|
|
||||||
+ sprintrc(rc));
|
|
||||||
+
|
|
||||||
if (unlink(sample))
|
|
||||||
- perror_msg_and_fail("unlink");
|
|
||||||
+ perror_msg_and_fail("unlink(\"%s\")", sample);
|
|
||||||
|
|
||||||
rc = syscall(__NR_fchmod, fd, 051);
|
|
||||||
# ifdef YFLAG
|
|
||||||
- printf("%s%s(%d<%s (deleted)>%s, 051) = %s\n",
|
|
||||||
+ printf("%s%s(%d<%s>(deleted)%s, 051) = %s\n",
|
|
||||||
# else
|
|
||||||
printf("%s%s(%d%s, 051) = %s\n",
|
|
||||||
# endif
|
|
||||||
@@ -73,9 +95,26 @@
|
|
||||||
sample_secontext,
|
|
||||||
sprintrc(rc));
|
|
||||||
|
|
||||||
+ if (unlink(sample_del))
|
|
||||||
+ perror_msg_and_fail("unlink(\"%s\")", sample_del);
|
|
||||||
+
|
|
||||||
+ rc = syscall(__NR_fchmod, fd_del, 051);
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ printf("%s%s(%d<%s>(deleted)%s, 051) = %s\n",
|
|
||||||
+# else
|
|
||||||
+ printf("%s%s(%d%s, 051) = %s\n",
|
|
||||||
+# endif
|
|
||||||
+ my_secontext, "fchmod",
|
|
||||||
+ fd_del,
|
|
||||||
+# ifdef YFLAG
|
|
||||||
+ sample_del_realpath,
|
|
||||||
+# endif
|
|
||||||
+ sample_del_secontext,
|
|
||||||
+ sprintrc(rc));
|
|
||||||
+
|
|
||||||
rc = syscall(__NR_fchmod, fd, 004);
|
|
||||||
# ifdef YFLAG
|
|
||||||
- printf("%s%s(%d<%s (deleted)>%s, 004) = %s\n",
|
|
||||||
+ printf("%s%s(%d<%s>(deleted)%s, 004) = %s\n",
|
|
||||||
# else
|
|
||||||
printf("%s%s(%d%s, 004) = %s\n",
|
|
||||||
# endif
|
|
@ -1,209 +0,0 @@
|
|||||||
From 3f0e5340b651da98251a58cc7923525d69f96032 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Fri, 1 Jul 2022 10:45:48 +0200
|
|
||||||
Subject: [PATCH] secontext: fix expected SELinux context check for unlinked
|
|
||||||
FDs
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
selinux_getfdcon open-coded a part of getfdpath_pid since it tries
|
|
||||||
to do the same job, figure out a path associated with an FD, for slightly
|
|
||||||
different purpose: to get the expected SELinux context for it. As the previous
|
|
||||||
commit shows, it's a bit more complicated in cases when the path ends
|
|
||||||
with the " (deleted)" string, which is also used for designated unlinked paths
|
|
||||||
in procfs. Otherwise, it may manifest in test failures such as this:
|
|
||||||
|
|
||||||
[unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023] fchmod(4</root/rpmbuild/BUILD/strace-5.13/tests/fchmod-y--secontext_full_mismatch.dir/fchmod_subdir/fchmod_sample_file> [unconfined_u:object_r:admin_home_t:s0!!system_u:object_r:admin_home_t:s0], 0600) = 0
|
|
||||||
-[unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023] fchmod(4</root/rpmbuild/BUILD/strace-5.13/tests/fchmod-y--secontext_full_mismatch.dir/fchmod_subdir/fchmod_sample_file (deleted)> [unconfined_u:object_r:admin_home_t:s0!!system_u:object_r:admin_home_t:s0], 051) = 0
|
|
||||||
-[unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023] fchmod(4</root/rpmbuild/BUILD/strace-5.13/tests/fchmod-y--secontext_full_mismatch.dir/fchmod_subdir/fchmod_sample_file (deleted)> [unconfined_u:object_r:admin_home_t:s0!!system_u:object_r:admin_home_t:s0], 004) = 0
|
|
||||||
+[unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023] fchmod(4</root/rpmbuild/BUILD/strace-5.13/tests/fchmod-y--secontext_full_mismatch.dir/fchmod_subdir/fchmod_sample_file (deleted)> [unconfined_u:object_r:admin_home_t:s0], 051) = 0
|
|
||||||
+[unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023] fchmod(4</root/rpmbuild/BUILD/strace-5.13/tests/fchmod-y--secontext_full_mismatch.dir/fchmod_subdir/fchmod_sample_file (deleted)> [unconfined_u:object_r:admin_home_t:s0], 004) = 0
|
|
||||||
+++ exited with 0 +++
|
|
||||||
+ fail_ '../../src/strace -a15 -y --secontext=full,mismatch -e trace=fchmod ../fchmod-y--secontext_full_mismatch output mismatch'
|
|
||||||
+ warn_ 'fchmod-y--secontext_full_mismatch.gen.test: failed test: ../../src/strace -a15 -y --secontext=full,mismatch -e trace=fchmod ../fchmod-y--secontext_full_mismatch output mismatch'
|
|
||||||
+ printf '%s\n' 'fchmod-y--secontext_full_mismatch.gen.test: failed test: ../../src/strace -a15 -y --secontext=full,mismatch -e trace=fchmod ../fchmod-y--secontext_full_mismatch output mismatch'
|
|
||||||
fchmod-y--secontext_full_mismatch.gen.test: failed test: ../../src/strace -a15 -y --secontext=full,mismatch -e trace=fchmod ../fchmod-y--secontext_full_mismatch output mismatch
|
|
||||||
+ exit 1
|
|
||||||
FAIL fchmod-y--secontext_full_mismatch.gen.test (exit status: 1)
|
|
||||||
|
|
||||||
that happens due to the fact that the get_expected_filecontext() call
|
|
||||||
is made against the path with the " (deleted)" part, which is wrong (it
|
|
||||||
is more wrong than shown above when a file with the path that ends with
|
|
||||||
" (deleted)" exists). Moreover, it would be incorrect to call stat()
|
|
||||||
on that path.
|
|
||||||
|
|
||||||
Let's factor out the common part of the code and simply call it
|
|
||||||
from selinux_getfdcon, then use the st_mode from the procfs link.
|
|
||||||
|
|
||||||
* src/defs.h (get_proc_pid_fd_path): New declaration.
|
|
||||||
* src/pathtrace.c (get)proc_pid_fd_path): New function, part
|
|
||||||
of getfdpath_pid that performs link resolution and processing
|
|
||||||
of the result.
|
|
||||||
(getfdpath_pid): Call get_proc_pid_fd_path after PID resolution.
|
|
||||||
* src/secontext.c (get_expected_filecontext): Add mode parameter, use
|
|
||||||
it in selabel_lookup call instead of retrieveing file mode using stat()
|
|
||||||
if it is not -1.
|
|
||||||
(selinux_getfdcon): Call get_proc_pid_fd_path instead
|
|
||||||
of open-coding path resolution code, call stat() on the procfs link
|
|
||||||
and pass the retrieved st_mode to the get_expected_filecontext call.
|
|
||||||
(selinux_getfilecon): Pass -1 as mode in the get_expected_filecontext
|
|
||||||
call.
|
|
||||||
|
|
||||||
Reported-by: Václav Kadlčík <vkadlcik@redhat.com>
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2087693
|
|
||||||
---
|
|
||||||
src/defs.h | 15 +++++++++++++++
|
|
||||||
src/pathtrace.c | 26 ++++++++++++++++++--------
|
|
||||||
src/secontext.c | 35 +++++++++++++++++++++--------------
|
|
||||||
3 files changed, 54 insertions(+), 22 deletions(-)
|
|
||||||
|
|
||||||
Index: strace-5.18/src/defs.h
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/defs.h 2022-07-12 18:22:01.563254140 +0200
|
|
||||||
+++ strace-5.18/src/defs.h 2022-07-12 18:22:06.202199392 +0200
|
|
||||||
@@ -785,6 +785,21 @@
|
|
||||||
return pathtrace_match_set(tcp, &global_path_set);
|
|
||||||
}
|
|
||||||
|
|
||||||
+/**
|
|
||||||
+ * Resolves a path for a fd procfs PID proc_pid (the one got from
|
|
||||||
+ * get_proc_pid()).
|
|
||||||
+ *
|
|
||||||
+ * @param proc_pid PID number in /proc, obtained with get_proc_pid().
|
|
||||||
+ * @param fd FD to resolve path for.
|
|
||||||
+ * @param buf Buffer to store the resolved path in.
|
|
||||||
+ * @param bufsize The size of buf.
|
|
||||||
+ * @param deleted If non-NULL, set to true if the path associated with the FD
|
|
||||||
+ * seems to have been unlinked and to false otherwise.
|
|
||||||
+ * @return Number of bytes written including terminating '\0'.
|
|
||||||
+ */
|
|
||||||
+extern int get_proc_pid_fd_path(int proc_pid, int fd, char *buf,
|
|
||||||
+ unsigned bufsize, bool *deleted);
|
|
||||||
+
|
|
||||||
extern int getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize,
|
|
||||||
bool *deleted);
|
|
||||||
|
|
||||||
Index: strace-5.18/src/pathtrace.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/pathtrace.c 2022-07-12 18:22:01.532254506 +0200
|
|
||||||
+++ strace-5.18/src/pathtrace.c 2022-07-12 18:22:06.202199392 +0200
|
|
||||||
@@ -77,11 +77,9 @@
|
|
||||||
set->paths_selected[set->num_selected++] = path;
|
|
||||||
}
|
|
||||||
|
|
||||||
-/*
|
|
||||||
- * Get path associated with fd of a process with pid.
|
|
||||||
- */
|
|
||||||
int
|
|
||||||
-getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize, bool *deleted)
|
|
||||||
+get_proc_pid_fd_path(int proc_pid, int fd, char *buf, unsigned bufsize,
|
|
||||||
+ bool *deleted)
|
|
||||||
{
|
|
||||||
char linkpath[sizeof("/proc/%u/fd/%u") + 2 * sizeof(int)*3];
|
|
||||||
ssize_t n;
|
|
||||||
@@ -89,10 +87,6 @@
|
|
||||||
if (fd < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
- int proc_pid = get_proc_pid(pid);
|
|
||||||
- if (!proc_pid)
|
|
||||||
- return -1;
|
|
||||||
-
|
|
||||||
xsprintf(linkpath, "/proc/%u/fd/%u", proc_pid, fd);
|
|
||||||
n = readlink(linkpath, buf, bufsize - 1);
|
|
||||||
if (n < 0)
|
|
||||||
@@ -143,6 +137,22 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
+ * Get path associated with fd of a process with pid.
|
|
||||||
+ */
|
|
||||||
+int
|
|
||||||
+getfdpath_pid(pid_t pid, int fd, char *buf, unsigned bufsize, bool *deleted)
|
|
||||||
+{
|
|
||||||
+ if (fd < 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ int proc_pid = get_proc_pid(pid);
|
|
||||||
+ if (!proc_pid)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ return get_proc_pid_fd_path(proc_pid, fd, buf, bufsize, deleted);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
* Add a path to the set we're tracing. Also add the canonicalized
|
|
||||||
* version of the path. Specifying NULL will delete all paths.
|
|
||||||
*/
|
|
||||||
Index: strace-5.18/src/secontext.c
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/src/secontext.c 2022-07-12 18:22:01.564254128 +0200
|
|
||||||
+++ strace-5.18/src/secontext.c 2022-07-12 18:22:06.203199380 +0200
|
|
||||||
@@ -62,7 +62,7 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
-get_expected_filecontext(const char *path, char **secontext)
|
|
||||||
+get_expected_filecontext(const char *path, char **secontext, int mode)
|
|
||||||
{
|
|
||||||
static struct selabel_handle *hdl;
|
|
||||||
|
|
||||||
@@ -80,12 +80,7 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- strace_stat_t stb;
|
|
||||||
- if (stat_file(path, &stb) < 0) {
|
|
||||||
- return -1;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return selabel_lookup(hdl, secontext, path, stb.st_mode);
|
|
||||||
+ return selabel_lookup(hdl, secontext, path, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -130,16 +125,22 @@
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We need to resolve the path, because selabel_lookup() doesn't
|
|
||||||
- * resolve anything. Using readlink() is sufficient here.
|
|
||||||
+ * resolve anything.
|
|
||||||
*/
|
|
||||||
+ char buf[PATH_MAX + 1];
|
|
||||||
+ ssize_t n = get_proc_pid_fd_path(proc_pid, fd, buf, sizeof(buf), NULL);
|
|
||||||
+ if ((size_t) n >= (sizeof(buf) - 1))
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
- char buf[PATH_MAX];
|
|
||||||
- ssize_t n = readlink(linkpath, buf, sizeof(buf));
|
|
||||||
- if ((size_t) n >= sizeof(buf))
|
|
||||||
+ /*
|
|
||||||
+ * We retrieve stat() here since the path the procfs link resolves into
|
|
||||||
+ * may be reused by a different file with different context.
|
|
||||||
+ */
|
|
||||||
+ strace_stat_t st;
|
|
||||||
+ if (stat_file(linkpath, &st))
|
|
||||||
return 0;
|
|
||||||
- buf[n] = '\0';
|
|
||||||
|
|
||||||
- get_expected_filecontext(buf, expected);
|
|
||||||
+ get_expected_filecontext(buf, expected, st.st_mode);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -190,7 +191,13 @@
|
|
||||||
if (!resolved)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- get_expected_filecontext(resolved, expected);
|
|
||||||
+ strace_stat_t st;
|
|
||||||
+ if (stat_file(resolved, &st) < 0)
|
|
||||||
+ goto out;
|
|
||||||
+
|
|
||||||
+ get_expected_filecontext(resolved, expected, st.st_mode);
|
|
||||||
+
|
|
||||||
+out:
|
|
||||||
free(resolved);
|
|
||||||
|
|
||||||
return 0;
|
|
@ -1,70 +0,0 @@
|
|||||||
From 5338636cd9ae7f53ed73f1a7909db03189ea2ff3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Mon, 4 Jul 2022 12:29:22 +0200
|
|
||||||
Subject: [PATCH] tests/bpf: fix sloppy low FD number usage
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
FD 42 can already be opened, so close it. Otherwise, it may lead
|
|
||||||
to the following test failure:
|
|
||||||
|
|
||||||
-bpf(BPF_LINK_CREATE, {link_create={prog_fd=0</dev/full>, target_fd=0</dev/full>, attach_type=BPF_TRACE_ITER, flags=0, iter_info=[{map={map_fd=0</dev/full>}}, {map={map_fd=42}}, {map={map_fd=314159265}}, {map={map_fd=-1159983635}}, {map={map_fd=-1}}], iter_info_len=5}}, 28) = 841540765612359407 (INJECTED)
|
|
||||||
+bpf(BPF_LINK_CREATE, {link_create={prog_fd=0</dev/full>, target_fd=0</dev/full>, attach_type=BPF_TRACE_ITER, flags=0, iter_info=[{map={map_fd=0</dev/full>}}, {map={map_fd=42</var/tmp/restraintd/logs/146893626/task.log>}}, {map={map_fd=314159265}}, {map={map_fd=-1159983635}}, {map={map_fd=-1}}], iter_info_len=5}}, 28) = 841540765612359407 (INJECTED)
|
|
||||||
bpf(BPF_LINK_CREATE, 0x3ff95574fe5, 28) = 841540765612359407 (INJECTED)
|
|
||||||
-bpf(BPF_LINK_CREATE, {link_create={prog_fd=0</dev/full>, target_fd=0</dev/full>, attach_type=BPF_TRACE_ITER, flags=0, iter_info=[{map={map_fd=0</dev/full>}}, {map={map_fd=42}}, {map={map_fd=314159265}}, {map={map_fd=-1159983635}}, {map={map_fd=-1}}, ... /* 0x3ff9555d000 */], iter_info_len=6}}, 28) = 841540765612359407 (INJECTED)
|
|
||||||
+bpf(BPF_LINK_CREATE, {link_create={prog_fd=0</dev/full>, target_fd=0</dev/full>, attach_type=BPF_TRACE_ITER, flags=0, iter_info=[{map={map_fd=0</dev/full>}}, {map={map_fd=42</var/tmp/restraintd/logs/146893626/task.log>}}, {map={map_fd=314159265}}, {map={map_fd=-1159983635}}, {map={map_fd=-1}}, ... /* 0x3ff9555d000 */], iter_info_len=6}}, 28) = 841540765612359407 (INJECTED)
|
|
||||||
[...]
|
|
||||||
FAIL bpf-success-long-y.test (exit status: 1)
|
|
||||||
|
|
||||||
* tests/bpf.c (init_BPF_LINK_CREATE_attr7): Close iter_info_data[1] fd.
|
|
||||||
|
|
||||||
Fixes: v5.18~18 "bpf: improve bpf(BPF_LINK_CREATE) decoding"
|
|
||||||
Reported-by: Lenka Špačková <lkuprova@redhat.com>
|
|
||||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2103137
|
|
||||||
---
|
|
||||||
tests/bpf.c | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/tests/bpf.c b/tests/bpf.c
|
|
||||||
index 82d870e..6c1ffd4 100644
|
|
||||||
--- a/tests/bpf.c
|
|
||||||
+++ b/tests/bpf.c
|
|
||||||
@@ -1557,6 +1557,8 @@ init_BPF_LINK_CREATE_attr7(struct bpf_attr_check *check, size_t idx)
|
|
||||||
{
|
|
||||||
struct BPF_LINK_CREATE_struct *attr = &check->data.BPF_LINK_CREATE_data;
|
|
||||||
|
|
||||||
+ close(iter_info_data[1]);
|
|
||||||
+
|
|
||||||
if (!iter_info_data_p) {
|
|
||||||
iter_info_data_p = tail_memdup(iter_info_data,
|
|
||||||
sizeof(iter_info_data));
|
|
||||||
diff --git a/tests-m32/bpf.c b/tests-m32/bpf.c
|
|
||||||
index 82d870e..6c1ffd4 100644
|
|
||||||
--- a/tests-m32/bpf.c
|
|
||||||
+++ b/tests-m32/bpf.c
|
|
||||||
@@ -1557,6 +1557,8 @@ init_BPF_LINK_CREATE_attr7(struct bpf_attr_check *check, size_t idx)
|
|
||||||
{
|
|
||||||
struct BPF_LINK_CREATE_struct *attr = &check->data.BPF_LINK_CREATE_data;
|
|
||||||
|
|
||||||
+ close(iter_info_data[1]);
|
|
||||||
+
|
|
||||||
if (!iter_info_data_p) {
|
|
||||||
iter_info_data_p = tail_memdup(iter_info_data,
|
|
||||||
sizeof(iter_info_data));
|
|
||||||
diff --git a/tests-mx32/bpf.c b/tests-mx32/bpf.c
|
|
||||||
index 82d870e..6c1ffd4 100644
|
|
||||||
--- a/tests-mx32/bpf.c
|
|
||||||
+++ b/tests-mx32/bpf.c
|
|
||||||
@@ -1557,6 +1557,8 @@ init_BPF_LINK_CREATE_attr7(struct bpf_attr_check *check, size_t idx)
|
|
||||||
{
|
|
||||||
struct BPF_LINK_CREATE_struct *attr = &check->data.BPF_LINK_CREATE_data;
|
|
||||||
|
|
||||||
+ close(iter_info_data[1]);
|
|
||||||
+
|
|
||||||
if (!iter_info_data_p) {
|
|
||||||
iter_info_data_p = tail_memdup(iter_info_data,
|
|
||||||
sizeof(iter_info_data));
|
|
||||||
--
|
|
||||||
2.1.4
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
|||||||
From c7e0ea6d712eb214dafe7e9eae57661d9a427ea7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Dmitry V. Levin" <ldv@strace.io>
|
|
||||||
Date: Mon, 28 Oct 2024 08:00:00 +0000
|
|
||||||
Subject: [PATCH 183/185] syscall: do not use uninitialized parts of struct
|
|
||||||
ptrace_syscall_info
|
|
||||||
|
|
||||||
* src/syscall.c (ptrace_syscall_info_is_entry,
|
|
||||||
ptrace_syscall_info_is_exit): New functions.
|
|
||||||
(get_scno): Replace ptrace_syscall_info_is_valid() with
|
|
||||||
ptrace_syscall_info_is_entry().
|
|
||||||
(get_error): Replace ptrace_syscall_info_is_valid() with
|
|
||||||
ptrace_syscall_info_is_exit().
|
|
||||||
(get_syscall_regs): Fall back to get_regs() if strace_get_syscall_info()
|
|
||||||
succeeded but couldn't obtain the necessary data.
|
|
||||||
|
|
||||||
Resolves: https://github.com/strace/strace/issues/322
|
|
||||||
---
|
|
||||||
src/syscall.c | 40 +++++++++++++++++++++++++++++++++++-----
|
|
||||||
1 file changed, 35 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/syscall.c b/src/syscall.c
|
|
||||||
index a6692721a..1f4d86dc1 100644
|
|
||||||
--- a/src/syscall.c
|
|
||||||
+++ b/src/syscall.c
|
|
||||||
@@ -1082,6 +1082,21 @@ ptrace_syscall_info_is_valid(void)
|
|
||||||
ptrace_sci.op <= PTRACE_SYSCALL_INFO_SECCOMP;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static bool
|
|
||||||
+ptrace_syscall_info_is_entry(void)
|
|
||||||
+{
|
|
||||||
+ return ptrace_get_syscall_info_supported &&
|
|
||||||
+ (ptrace_sci.op == PTRACE_SYSCALL_INFO_ENTRY ||
|
|
||||||
+ ptrace_sci.op == PTRACE_SYSCALL_INFO_SECCOMP);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static bool
|
|
||||||
+ptrace_syscall_info_is_exit(void)
|
|
||||||
+{
|
|
||||||
+ return ptrace_get_syscall_info_supported &&
|
|
||||||
+ ptrace_sci.op == PTRACE_SYSCALL_INFO_EXIT;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
#define XLAT_MACROS_ONLY
|
|
||||||
#include "xlat/nt_descriptor_types.h"
|
|
||||||
#undef XLAT_MACROS_ONLY
|
|
||||||
@@ -1376,8 +1391,23 @@ get_syscall_regs(struct tcb *tcp)
|
|
||||||
if (get_regs_error != -1)
|
|
||||||
return get_regs_error;
|
|
||||||
|
|
||||||
- if (ptrace_get_syscall_info_supported)
|
|
||||||
- return strace_get_syscall_info(tcp) ? 0 : get_regs_error;
|
|
||||||
+ if (ptrace_get_syscall_info_supported) {
|
|
||||||
+ if (!strace_get_syscall_info(tcp))
|
|
||||||
+ return get_regs_error;
|
|
||||||
+
|
|
||||||
+ if ((entering(tcp) && ptrace_syscall_info_is_entry()) ||
|
|
||||||
+ (exiting(tcp) && ptrace_syscall_info_is_exit()))
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * PTRACE_GET_SYSCALL_INFO succeeded but didn't help,
|
|
||||||
+ * falling back to get_regs().
|
|
||||||
+ *
|
|
||||||
+ * This can happen when get_syscall_regs() is called
|
|
||||||
+ * from startup_tcb() via get_scno().
|
|
||||||
+ */
|
|
||||||
+ debug_func_msg("ptrace_sci.op = %d", ptrace_sci.op);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return get_regs(tcp);
|
|
||||||
}
|
|
||||||
@@ -1408,7 +1438,7 @@ get_scno(struct tcb *tcp)
|
|
||||||
if (get_syscall_regs(tcp) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
- if (ptrace_syscall_info_is_valid()) {
|
|
||||||
+ if (ptrace_syscall_info_is_entry()) {
|
|
||||||
/* Apply arch-specific workarounds. */
|
|
||||||
int rc = arch_check_scno(tcp);
|
|
||||||
if (rc != 1)
|
|
||||||
@@ -1456,7 +1486,7 @@ get_scno(struct tcb *tcp)
|
|
||||||
static int
|
|
||||||
get_syscall_args(struct tcb *tcp)
|
|
||||||
{
|
|
||||||
- if (ptrace_syscall_info_is_valid()) {
|
|
||||||
+ if (ptrace_syscall_info_is_entry()) {
|
|
||||||
const unsigned int n =
|
|
||||||
MIN(ARRAY_SIZE(tcp->u_arg),
|
|
||||||
ARRAY_SIZE(ptrace_sci.entry.args));
|
|
||||||
@@ -1507,7 +1537,7 @@ get_syscall_result(struct tcb *tcp)
|
|
||||||
static void
|
|
||||||
get_error(struct tcb *tcp, const bool check_errno)
|
|
||||||
{
|
|
||||||
- if (ptrace_syscall_info_is_valid()) {
|
|
||||||
+ if (ptrace_syscall_info_is_exit()) {
|
|
||||||
if (ptrace_sci.exit.is_error) {
|
|
||||||
tcp->u_rval = -1;
|
|
||||||
tcp->u_error = -ptrace_sci.exit.rval;
|
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
From 2048c136ba6edc4282dbc976c499e038d5b60c03 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Dmitry V. Levin" <ldv@strace.io>
|
|
||||||
Date: Mon, 28 Oct 2024 08:00:00 +0000
|
|
||||||
Subject: [PATCH 184/185] startup_tcb: add a comment
|
|
||||||
|
|
||||||
* src/strace.c (startup_tcb): Add a comment explaining why it is safe
|
|
||||||
to call get_scno().
|
|
||||||
---
|
|
||||||
src/strace.c | 12 ++++++++++--
|
|
||||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/strace.c b/src/strace.c
|
|
||||||
index 45ab48c43..1a9d53bc8 100644
|
|
||||||
--- a/src/strace.c
|
|
||||||
+++ b/src/strace.c
|
|
||||||
@@ -3549,8 +3549,16 @@ startup_tcb(struct tcb *tcp)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- if ((tcp->flags & TCB_GRABBED) && (get_scno(tcp) == 1))
|
|
||||||
- tcp->s_prev_ent = tcp->s_ent;
|
|
||||||
+ if (tcp->flags & TCB_GRABBED) {
|
|
||||||
+ /*
|
|
||||||
+ * There is no guarantee the state of the tracee is such that
|
|
||||||
+ * would allow get_scno() to obtain meaningful information.
|
|
||||||
+ * However, if the tracee is not in a syscall, then the garbage
|
|
||||||
+ * obtained by get_scno() is not going to be used.
|
|
||||||
+ */
|
|
||||||
+ if (get_scno(tcp) == 1)
|
|
||||||
+ tcp->s_prev_ent = tcp->s_ent;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (cflag) {
|
|
||||||
tcp->atime = tcp->stime;
|
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
@ -1,129 +0,0 @@
|
|||||||
From 3bf08cbb388a89014252bdfe5143324bdaa4dc46 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Dmitry V. Levin" <ldv@strace.io>
|
|
||||||
Date: Mon, 28 Oct 2024 08:00:00 +0000
|
|
||||||
Subject: [PATCH 185/185] tests: add another test of restart_syscall decoding
|
|
||||||
|
|
||||||
* tests/restart_syscall-p.test: New test.
|
|
||||||
* tests/restart_syscall-p.expected: New file.
|
|
||||||
* tests/Makefile.am (DECODER_TESTS): Add restart_syscall-p.test.
|
|
||||||
(check_DATA): Add restart_syscall-p.expected.
|
|
||||||
---
|
|
||||||
tests/Makefile.am | 2 ++
|
|
||||||
tests/restart_syscall-p.expected | 2 ++
|
|
||||||
tests/restart_syscall-p.test | 20 ++++++++++++++++++++
|
|
||||||
3 files changed, 24 insertions(+)
|
|
||||||
create mode 100644 tests/restart_syscall-p.expected
|
|
||||||
create mode 100755 tests/restart_syscall-p.test
|
|
||||||
|
|
||||||
Index: strace-5.18/tests/Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests/Makefile.am 2022-06-17 13:45:22.000000000 +0200
|
|
||||||
+++ strace-5.18/tests/Makefile.am 2024-11-01 14:29:01.292879707 +0100
|
|
||||||
@@ -499,6 +499,7 @@
|
|
||||||
prctl-seccomp-strict.test \
|
|
||||||
qual_fault-exit_group.test \
|
|
||||||
readv.test \
|
|
||||||
+ restart_syscall-p.test \
|
|
||||||
rt_sigaction.test \
|
|
||||||
scm_rights-fd.test \
|
|
||||||
seccomp-strict.test \
|
|
||||||
@@ -675,6 +676,7 @@
|
|
||||||
qualify_personality_empty.in \
|
|
||||||
quotactl.h \
|
|
||||||
regex.in \
|
|
||||||
+ restart_syscall-p.expected \
|
|
||||||
rt_sigaction.awk \
|
|
||||||
run.sh \
|
|
||||||
sched.in \
|
|
||||||
Index: strace-5.18/tests/restart_syscall-p.expected
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
||||||
+++ strace-5.18/tests/restart_syscall-p.expected 2024-11-01 14:29:01.292879707 +0100
|
|
||||||
@@ -0,0 +1,2 @@
|
|
||||||
+restart_syscall(<... resuming interrupted nanosleep ...>) = 0
|
|
||||||
+exit_group(0) = ?
|
|
||||||
Index: strace-5.18/tests/restart_syscall-p.test
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
|
||||||
+++ strace-5.18/tests/restart_syscall-p.test 2024-11-01 14:29:01.292879707 +0100
|
|
||||||
@@ -0,0 +1,20 @@
|
|
||||||
+#!/bin/sh
|
|
||||||
+#
|
|
||||||
+# Check restart_syscall decoding.
|
|
||||||
+#
|
|
||||||
+# Copyright (c) 2015-2024 The strace developers.
|
|
||||||
+# All rights reserved.
|
|
||||||
+#
|
|
||||||
+# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
+
|
|
||||||
+. "${srcdir=.}/init.sh"
|
|
||||||
+
|
|
||||||
+run_prog ../sleep 0
|
|
||||||
+
|
|
||||||
+../set_ptracer_any ../sleep 2 > /dev/null &
|
|
||||||
+tracee_pid=$!
|
|
||||||
+
|
|
||||||
+../sleep 1
|
|
||||||
+
|
|
||||||
+run_strace -qq -a14 -p $tracee_pid
|
|
||||||
+match_diff
|
|
||||||
Index: strace-5.18/tests-m32/Makefile.in
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-m32/Makefile.in 2022-06-18 20:33:58.000000000 +0200
|
|
||||||
+++ strace-5.18/tests-m32/Makefile.in 2024-11-01 14:29:01.295879673 +0100
|
|
||||||
@@ -9232,6 +9232,7 @@
|
|
||||||
prctl-seccomp-strict.test \
|
|
||||||
qual_fault-exit_group.test \
|
|
||||||
readv.test \
|
|
||||||
+ restart_syscall-p.test \
|
|
||||||
rt_sigaction.test \
|
|
||||||
scm_rights-fd.test \
|
|
||||||
seccomp-strict.test \
|
|
||||||
@@ -9403,6 +9404,7 @@
|
|
||||||
qualify_personality_empty.in \
|
|
||||||
quotactl.h \
|
|
||||||
regex.in \
|
|
||||||
+ restart_syscall-p.expected \
|
|
||||||
rt_sigaction.awk \
|
|
||||||
run.sh \
|
|
||||||
sched.in \
|
|
||||||
Index: strace-5.18/tests-mx32/Makefile.in
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests-mx32/Makefile.in 2022-06-18 20:33:58.000000000 +0200
|
|
||||||
+++ strace-5.18/tests-mx32/Makefile.in 2024-11-01 14:29:01.297879650 +0100
|
|
||||||
@@ -9232,6 +9232,7 @@
|
|
||||||
prctl-seccomp-strict.test \
|
|
||||||
qual_fault-exit_group.test \
|
|
||||||
readv.test \
|
|
||||||
+ restart_syscall-p.test \
|
|
||||||
rt_sigaction.test \
|
|
||||||
scm_rights-fd.test \
|
|
||||||
seccomp-strict.test \
|
|
||||||
@@ -9403,6 +9404,7 @@
|
|
||||||
qualify_personality_empty.in \
|
|
||||||
quotactl.h \
|
|
||||||
regex.in \
|
|
||||||
+ restart_syscall-p.expected \
|
|
||||||
rt_sigaction.awk \
|
|
||||||
run.sh \
|
|
||||||
sched.in \
|
|
||||||
Index: strace-5.18/tests/Makefile.in
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.18.orig/tests/Makefile.in 2022-06-18 20:33:59.000000000 +0200
|
|
||||||
+++ strace-5.18/tests/Makefile.in 2024-11-01 14:29:01.299879628 +0100
|
|
||||||
@@ -9231,6 +9231,7 @@
|
|
||||||
prctl-seccomp-strict.test \
|
|
||||||
qual_fault-exit_group.test \
|
|
||||||
readv.test \
|
|
||||||
+ restart_syscall-p.test \
|
|
||||||
rt_sigaction.test \
|
|
||||||
scm_rights-fd.test \
|
|
||||||
seccomp-strict.test \
|
|
||||||
@@ -9402,6 +9403,7 @@
|
|
||||||
qualify_personality_empty.in \
|
|
||||||
quotactl.h \
|
|
||||||
regex.in \
|
|
||||||
+ restart_syscall-p.expected \
|
|
||||||
rt_sigaction.awk \
|
|
||||||
run.sh \
|
|
||||||
sched.in \
|
|
@ -1,108 +0,0 @@
|
|||||||
From e9d784ecd3ef0c5af9f8c74a830e797d773d71cb Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Dmitry V. Levin" <ldv@strace.io>
|
|
||||||
Date: Sun, 21 Apr 2024 08:00:00 +0000
|
|
||||||
Subject: [PATCH] tests: workaround net-yy-inet* for new kernels
|
|
||||||
|
|
||||||
Starting with Linux kernel commit v6.8-rc1~131^2~223, NETLINK_INET_DIAG
|
|
||||||
works also for bound-only sockets. As there is no easy way to tell
|
|
||||||
whether the running kernel contains that commit, the test cannot easily
|
|
||||||
predict the kernel behavior in case of sockets in bound-only state.
|
|
||||||
Workaround this by skipping the corresponding part of the test.
|
|
||||||
|
|
||||||
* tests/net-yy-inet.test: Filter out listen() calls.
|
|
||||||
* tests/net-yy-inet.c (main): Do not print expected output for listen()
|
|
||||||
syscall.
|
|
||||||
|
|
||||||
Resolves: https://github.com/strace/strace/issues/299
|
|
||||||
---
|
|
||||||
tests/net-yy-inet.c | 2 --
|
|
||||||
tests/net-yy-inet.test | 6 +++++-
|
|
||||||
2 files changed, 5 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tests/net-yy-inet.c b/tests/net-yy-inet.c
|
|
||||||
index 1a83548bf..7f8e05783 100644
|
|
||||||
--- a/tests/net-yy-inet.c
|
|
||||||
+++ b/tests/net-yy-inet.c
|
|
||||||
@@ -63,8 +63,6 @@ main(void)
|
|
||||||
|
|
||||||
if (listen(listen_fd, 1))
|
|
||||||
perror_msg_and_skip("listen");
|
|
||||||
- printf("listen(%d<" TCP_STR ":[%lu]>, 1) = 0\n",
|
|
||||||
- listen_fd, listen_inode);
|
|
||||||
|
|
||||||
memset(listen_sa, 0, sizeof(addr));
|
|
||||||
*len = sizeof(addr);
|
|
||||||
diff --git a/tests/net-yy-inet.test b/tests/net-yy-inet.test
|
|
||||||
index 9a3f851bf..d45414bcb 100755
|
|
||||||
--- a/tests/net-yy-inet.test
|
|
||||||
+++ b/tests/net-yy-inet.test
|
|
||||||
@@ -17,5 +17,9 @@ run_prog > /dev/null
|
|
||||||
run_strace -a22 -yy -eclose,network $args > "$EXP"
|
|
||||||
|
|
||||||
# Filter out close() calls made by ld.so and libc.
|
|
||||||
-sed -n '/socket/,$p' < "$LOG" > "$OUT"
|
|
||||||
+#
|
|
||||||
+# Filter out listen() call as we cannot easily predict the kernel
|
|
||||||
+# behaviour because there is no easy way to tell whether the Linux kernel
|
|
||||||
+# contains commit v6.8-rc1~131^2~223.
|
|
||||||
+sed -n '/^listen/d;/^socket/,$p' < "$LOG" > "$OUT"
|
|
||||||
match_diff "$OUT" "$EXP"
|
|
||||||
diff --git a/tests-m32/net-yy-inet.c b/tests-m32/net-yy-inet.c
|
|
||||||
index 1a83548bf..7f8e05783 100644
|
|
||||||
--- a/tests-m32/net-yy-inet.c
|
|
||||||
+++ b/tests-m32/net-yy-inet.c
|
|
||||||
@@ -63,8 +63,6 @@ main(void)
|
|
||||||
|
|
||||||
if (listen(listen_fd, 1))
|
|
||||||
perror_msg_and_skip("listen");
|
|
||||||
- printf("listen(%d<" TCP_STR ":[%lu]>, 1) = 0\n",
|
|
||||||
- listen_fd, listen_inode);
|
|
||||||
|
|
||||||
memset(listen_sa, 0, sizeof(addr));
|
|
||||||
*len = sizeof(addr);
|
|
||||||
diff --git a/tests-m32/net-yy-inet.test b/tests-m32/net-yy-inet.test
|
|
||||||
index 9a3f851bf..d45414bcb 100755
|
|
||||||
--- a/tests-m32/net-yy-inet.test
|
|
||||||
+++ b/tests-m32/net-yy-inet.test
|
|
||||||
@@ -17,5 +17,9 @@ run_prog > /dev/null
|
|
||||||
run_strace -a22 -yy -eclose,network $args > "$EXP"
|
|
||||||
|
|
||||||
# Filter out close() calls made by ld.so and libc.
|
|
||||||
-sed -n '/socket/,$p' < "$LOG" > "$OUT"
|
|
||||||
+#
|
|
||||||
+# Filter out listen() call as we cannot easily predict the kernel
|
|
||||||
+# behaviour because there is no easy way to tell whether the Linux kernel
|
|
||||||
+# contains commit v6.8-rc1~131^2~223.
|
|
||||||
+sed -n '/^listen/d;/^socket/,$p' < "$LOG" > "$OUT"
|
|
||||||
match_diff "$OUT" "$EXP"
|
|
||||||
diff --git a/tests-mx32/net-yy-inet.c b/tests-mx32/net-yy-inet.c
|
|
||||||
index 1a83548bf..7f8e05783 100644
|
|
||||||
--- a/tests-mx32/net-yy-inet.c
|
|
||||||
+++ b/tests-mx32/net-yy-inet.c
|
|
||||||
@@ -63,8 +63,6 @@ main(void)
|
|
||||||
|
|
||||||
if (listen(listen_fd, 1))
|
|
||||||
perror_msg_and_skip("listen");
|
|
||||||
- printf("listen(%d<" TCP_STR ":[%lu]>, 1) = 0\n",
|
|
||||||
- listen_fd, listen_inode);
|
|
||||||
|
|
||||||
memset(listen_sa, 0, sizeof(addr));
|
|
||||||
*len = sizeof(addr);
|
|
||||||
diff --git a/tests-mx32/net-yy-inet.test b/tests-mx32/net-yy-inet.test
|
|
||||||
index 9a3f851bf..d45414bcb 100755
|
|
||||||
--- a/tests-mx32/net-yy-inet.test
|
|
||||||
+++ b/tests-mx32/net-yy-inet.test
|
|
||||||
@@ -17,5 +17,9 @@ run_prog > /dev/null
|
|
||||||
run_strace -a22 -yy -eclose,network $args > "$EXP"
|
|
||||||
|
|
||||||
# Filter out close() calls made by ld.so and libc.
|
|
||||||
-sed -n '/socket/,$p' < "$LOG" > "$OUT"
|
|
||||||
+#
|
|
||||||
+# Filter out listen() call as we cannot easily predict the kernel
|
|
||||||
+# behaviour because there is no easy way to tell whether the Linux kernel
|
|
||||||
+# contains commit v6.8-rc1~131^2~223.
|
|
||||||
+sed -n '/^listen/d;/^socket/,$p' < "$LOG" > "$OUT"
|
|
||||||
match_diff "$OUT" "$EXP"
|
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
@ -1,530 +0,0 @@
|
|||||||
From 660186018897b386fb05d7951aec57a81211a1a4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Wed, 21 Aug 2024 15:32:42 +0200
|
|
||||||
Subject: [PATCH] tests: avoid linkat--secontext_mismatch failures on
|
|
||||||
setfilecon errors
|
|
||||||
|
|
||||||
linkat--secontext_mismatch can fail if setfilecon cannot update SELinux
|
|
||||||
context (for example, that happens when the test is run under
|
|
||||||
an unprivileged user and tries to change the type to unconfined_t).
|
|
||||||
Avoid it by actually checking the return code and skipping the test
|
|
||||||
if there are errors reported by reset_secontext_file
|
|
||||||
or update_secontext_field calls.
|
|
||||||
|
|
||||||
* tests/secontext.h: Include <errno.h>.
|
|
||||||
(reset_secontext_file, update_secontext_field): Change the return type
|
|
||||||
from void to int.
|
|
||||||
[!(TEST_SECONTEXT && HAVE_SELINUX_RUNTIME)] (reset_secontext_file,
|
|
||||||
update_secontext_field): Return -ENOSYS.
|
|
||||||
* tests/secontext.c: (reset_secontext_file): Change the return type
|
|
||||||
to int; save the setfilecon return value to ret and reset it to -errno
|
|
||||||
if the latter is non-zero; return ret.
|
|
||||||
(update_secontext_field): Change the return type to int; return -1
|
|
||||||
if ctx is NULL; save the setfilecon return value to ret and reset
|
|
||||||
it to -errno if the latter is non-zero; return ret.
|
|
||||||
* tests/linkat.c: Include "xlat.h".
|
|
||||||
(secontext_types_data, secontext_types): New constants.
|
|
||||||
(mangle_secontext_field): Store the new field value in the new variable;
|
|
||||||
store the update_secontext_field return value to the ret variable, error
|
|
||||||
and skip if it is non-zero.
|
|
||||||
(main): Error and skip if reset_secontext_file returns non-zero.
|
|
||||||
|
|
||||||
Reported-by: Edjunior Machado <emachado@redhat.com>
|
|
||||||
---
|
|
||||||
tests/linkat.c | 34 ++++++++++++++++++++++++++++++----
|
|
||||||
tests/secontext.c | 19 ++++++++++++++-----
|
|
||||||
tests/secontext.h | 14 +++++++++-----
|
|
||||||
3 files changed, 53 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tests/linkat.c b/tests/linkat.c
|
|
||||||
index 1d0ee3c9f..832392ca0 100644
|
|
||||||
--- a/tests/linkat.c
|
|
||||||
+++ b/tests/linkat.c
|
|
||||||
@@ -19,8 +19,20 @@
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "secontext.h"
|
|
||||||
+#include "xlat.h"
|
|
||||||
#include "xmalloc.h"
|
|
||||||
|
|
||||||
+struct xlat_data secontext_types_data[] = {
|
|
||||||
+ [SECONTEXT_USER] = XLAT_PAIR(SECONTEXT_USER, "user"),
|
|
||||||
+ [SECONTEXT_ROLE] = XLAT_PAIR(SECONTEXT_ROLE, "role"),
|
|
||||||
+ [SECONTEXT_TYPE] = XLAT_PAIR(SECONTEXT_TYPE, "type"),
|
|
||||||
+};
|
|
||||||
+struct xlat secontext_types = {
|
|
||||||
+ .data = secontext_types_data,
|
|
||||||
+ .size = ARRAY_SIZE(secontext_types_data),
|
|
||||||
+ .type = XT_INDEXED,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
mangle_secontext_field(const char *path, enum secontext_field field,
|
|
||||||
const char *new_val, const char *fallback_val)
|
|
||||||
@@ -29,10 +41,18 @@ mangle_secontext_field(const char *path, enum secontext_field field,
|
|
||||||
if (!orig)
|
|
||||||
return;
|
|
||||||
|
|
||||||
- update_secontext_field(path, field,
|
|
||||||
- strcmp(new_val, orig) ? new_val : fallback_val);
|
|
||||||
+ const char *new = strcmp(new_val, orig) ? new_val : fallback_val;
|
|
||||||
|
|
||||||
free(orig);
|
|
||||||
+
|
|
||||||
+ int ret = update_secontext_field(path, field, new);
|
|
||||||
+ if (ret) {
|
|
||||||
+ error_msg_and_skip("Failed to mangle secontext %s for "
|
|
||||||
+ "'%s' to %s: %d",
|
|
||||||
+ sprintxval_abbrev(&secontext_types, field,
|
|
||||||
+ "SECONTEXT_???"),
|
|
||||||
+ path, new, ret);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
@@ -103,8 +123,14 @@ main(void)
|
|
||||||
if (close(fd_sample_2))
|
|
||||||
perror_msg_and_fail("close");
|
|
||||||
|
|
||||||
- if (*sample_1_secontext && strstr(sample_1_secontext, "!!"))
|
|
||||||
- reset_secontext_file(sample_1);
|
|
||||||
+ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) {
|
|
||||||
+ int ret;
|
|
||||||
+ if ((ret = reset_secontext_file(sample_1))) {
|
|
||||||
+ errno = -ret;
|
|
||||||
+ perror_msg_and_skip("Reset secontext for '%s'",
|
|
||||||
+ sample_1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
free(sample_1_secontext);
|
|
||||||
|
|
||||||
diff --git a/tests/secontext.c b/tests/secontext.c
|
|
||||||
index 84c682869..a0463c467 100644
|
|
||||||
--- a/tests/secontext.c
|
|
||||||
+++ b/tests/secontext.c
|
|
||||||
@@ -284,14 +284,19 @@ secontext_short_pid(pid_t pid)
|
|
||||||
return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid));
|
|
||||||
}
|
|
||||||
|
|
||||||
-void reset_secontext_file(const char *file)
|
|
||||||
+int
|
|
||||||
+reset_secontext_file(const char *file)
|
|
||||||
{
|
|
||||||
char *proper_ctx = raw_expected_secontext_full_file(file);
|
|
||||||
- (void) setfilecon(file, proper_ctx);
|
|
||||||
+ int ret = setfilecon(file, proper_ctx);
|
|
||||||
+ if (ret && errno)
|
|
||||||
+ ret = -errno;
|
|
||||||
free(proper_ctx);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void
|
|
||||||
+int
|
|
||||||
update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
const char *newvalue)
|
|
||||||
{
|
|
||||||
@@ -300,7 +305,7 @@ update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
|
|
||||||
char *ctx = raw_secontext_full_file(file);
|
|
||||||
if (ctx == NULL)
|
|
||||||
- return;
|
|
||||||
+ return -1;
|
|
||||||
|
|
||||||
char *saveptr = NULL;
|
|
||||||
char *token;
|
|
||||||
@@ -319,11 +324,15 @@ update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1],
|
|
||||||
split[2], split[3]);
|
|
||||||
|
|
||||||
- (void) setfilecon(file, newcontext);
|
|
||||||
+ int ret = setfilecon(file, newcontext);
|
|
||||||
+ if (ret && errno)
|
|
||||||
+ ret = -errno;
|
|
||||||
|
|
||||||
free(newcontext);
|
|
||||||
free(ctx);
|
|
||||||
errno = saved_errno;
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HAVE_SELINUX_RUNTIME */
|
|
||||||
diff --git a/tests/secontext.h b/tests/secontext.h
|
|
||||||
index b5bba2272..dab33e6a5 100644
|
|
||||||
--- a/tests/secontext.h
|
|
||||||
+++ b/tests/secontext.h
|
|
||||||
@@ -7,6 +7,8 @@
|
|
||||||
|
|
||||||
#include "tests.h"
|
|
||||||
#include "xmalloc.h"
|
|
||||||
+
|
|
||||||
+#include <errno.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
char *secontext_full_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
@@ -35,10 +37,10 @@ char *get_secontext_field(const char *full_context, enum secontext_field field);
|
|
||||||
char *get_secontext_field_fd(int fd, enum secontext_field field);
|
|
||||||
char *get_secontext_field_file(const char *file, enum secontext_field field);
|
|
||||||
|
|
||||||
-void reset_secontext_file(const char *file);
|
|
||||||
+int reset_secontext_file(const char *file);
|
|
||||||
|
|
||||||
-void update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
- const char *newvalue);
|
|
||||||
+int update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
+ const char *newvalue);
|
|
||||||
|
|
||||||
# ifdef PRINT_SECONTEXT_FULL
|
|
||||||
|
|
||||||
@@ -81,15 +83,17 @@ get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline void
|
|
||||||
+static inline int
|
|
||||||
reset_secontext_file(const char *file)
|
|
||||||
{
|
|
||||||
+ return -ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline void
|
|
||||||
+static inline int
|
|
||||||
update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
const char *newvalue)
|
|
||||||
{
|
|
||||||
+ return -ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
# define SECONTEXT_FD(fd) xstrdup("")
|
|
||||||
diff --git a/tests-m32/linkat.c b/tests-m32/linkat.c
|
|
||||||
index 1d0ee3c9f..832392ca0 100644
|
|
||||||
--- a/tests-m32/linkat.c
|
|
||||||
+++ b/tests-m32/linkat.c
|
|
||||||
@@ -19,8 +19,20 @@
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "secontext.h"
|
|
||||||
+#include "xlat.h"
|
|
||||||
#include "xmalloc.h"
|
|
||||||
|
|
||||||
+struct xlat_data secontext_types_data[] = {
|
|
||||||
+ [SECONTEXT_USER] = XLAT_PAIR(SECONTEXT_USER, "user"),
|
|
||||||
+ [SECONTEXT_ROLE] = XLAT_PAIR(SECONTEXT_ROLE, "role"),
|
|
||||||
+ [SECONTEXT_TYPE] = XLAT_PAIR(SECONTEXT_TYPE, "type"),
|
|
||||||
+};
|
|
||||||
+struct xlat secontext_types = {
|
|
||||||
+ .data = secontext_types_data,
|
|
||||||
+ .size = ARRAY_SIZE(secontext_types_data),
|
|
||||||
+ .type = XT_INDEXED,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
mangle_secontext_field(const char *path, enum secontext_field field,
|
|
||||||
const char *new_val, const char *fallback_val)
|
|
||||||
@@ -29,10 +41,18 @@ mangle_secontext_field(const char *path, enum secontext_field field,
|
|
||||||
if (!orig)
|
|
||||||
return;
|
|
||||||
|
|
||||||
- update_secontext_field(path, field,
|
|
||||||
- strcmp(new_val, orig) ? new_val : fallback_val);
|
|
||||||
+ const char *new = strcmp(new_val, orig) ? new_val : fallback_val;
|
|
||||||
|
|
||||||
free(orig);
|
|
||||||
+
|
|
||||||
+ int ret = update_secontext_field(path, field, new);
|
|
||||||
+ if (ret) {
|
|
||||||
+ error_msg_and_skip("Failed to mangle secontext %s for "
|
|
||||||
+ "'%s' to %s: %d",
|
|
||||||
+ sprintxval_abbrev(&secontext_types, field,
|
|
||||||
+ "SECONTEXT_???"),
|
|
||||||
+ path, new, ret);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
@@ -103,8 +123,14 @@ main(void)
|
|
||||||
if (close(fd_sample_2))
|
|
||||||
perror_msg_and_fail("close");
|
|
||||||
|
|
||||||
- if (*sample_1_secontext && strstr(sample_1_secontext, "!!"))
|
|
||||||
- reset_secontext_file(sample_1);
|
|
||||||
+ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) {
|
|
||||||
+ int ret;
|
|
||||||
+ if ((ret = reset_secontext_file(sample_1))) {
|
|
||||||
+ errno = -ret;
|
|
||||||
+ perror_msg_and_skip("Reset secontext for '%s'",
|
|
||||||
+ sample_1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
free(sample_1_secontext);
|
|
||||||
|
|
||||||
diff --git a/tests-m32/secontext.c b/tests-m32/secontext.c
|
|
||||||
index 84c682869..a0463c467 100644
|
|
||||||
--- a/tests-m32/secontext.c
|
|
||||||
+++ b/tests-m32/secontext.c
|
|
||||||
@@ -284,14 +284,19 @@ secontext_short_pid(pid_t pid)
|
|
||||||
return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid));
|
|
||||||
}
|
|
||||||
|
|
||||||
-void reset_secontext_file(const char *file)
|
|
||||||
+int
|
|
||||||
+reset_secontext_file(const char *file)
|
|
||||||
{
|
|
||||||
char *proper_ctx = raw_expected_secontext_full_file(file);
|
|
||||||
- (void) setfilecon(file, proper_ctx);
|
|
||||||
+ int ret = setfilecon(file, proper_ctx);
|
|
||||||
+ if (ret && errno)
|
|
||||||
+ ret = -errno;
|
|
||||||
free(proper_ctx);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void
|
|
||||||
+int
|
|
||||||
update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
const char *newvalue)
|
|
||||||
{
|
|
||||||
@@ -300,7 +305,7 @@ update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
|
|
||||||
char *ctx = raw_secontext_full_file(file);
|
|
||||||
if (ctx == NULL)
|
|
||||||
- return;
|
|
||||||
+ return -1;
|
|
||||||
|
|
||||||
char *saveptr = NULL;
|
|
||||||
char *token;
|
|
||||||
@@ -319,11 +324,15 @@ update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1],
|
|
||||||
split[2], split[3]);
|
|
||||||
|
|
||||||
- (void) setfilecon(file, newcontext);
|
|
||||||
+ int ret = setfilecon(file, newcontext);
|
|
||||||
+ if (ret && errno)
|
|
||||||
+ ret = -errno;
|
|
||||||
|
|
||||||
free(newcontext);
|
|
||||||
free(ctx);
|
|
||||||
errno = saved_errno;
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HAVE_SELINUX_RUNTIME */
|
|
||||||
diff --git a/tests-m32/secontext.h b/tests-m32/secontext.h
|
|
||||||
index b5bba2272..dab33e6a5 100644
|
|
||||||
--- a/tests-m32/secontext.h
|
|
||||||
+++ b/tests-m32/secontext.h
|
|
||||||
@@ -7,6 +7,8 @@
|
|
||||||
|
|
||||||
#include "tests.h"
|
|
||||||
#include "xmalloc.h"
|
|
||||||
+
|
|
||||||
+#include <errno.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
char *secontext_full_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
@@ -35,10 +37,10 @@ char *get_secontext_field(const char *full_context, enum secontext_field field);
|
|
||||||
char *get_secontext_field_fd(int fd, enum secontext_field field);
|
|
||||||
char *get_secontext_field_file(const char *file, enum secontext_field field);
|
|
||||||
|
|
||||||
-void reset_secontext_file(const char *file);
|
|
||||||
+int reset_secontext_file(const char *file);
|
|
||||||
|
|
||||||
-void update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
- const char *newvalue);
|
|
||||||
+int update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
+ const char *newvalue);
|
|
||||||
|
|
||||||
# ifdef PRINT_SECONTEXT_FULL
|
|
||||||
|
|
||||||
@@ -81,15 +83,17 @@ get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline void
|
|
||||||
+static inline int
|
|
||||||
reset_secontext_file(const char *file)
|
|
||||||
{
|
|
||||||
+ return -ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline void
|
|
||||||
+static inline int
|
|
||||||
update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
const char *newvalue)
|
|
||||||
{
|
|
||||||
+ return -ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
# define SECONTEXT_FD(fd) xstrdup("")
|
|
||||||
diff --git a/tests-mx32/linkat.c b/tests-mx32/linkat.c
|
|
||||||
index 1d0ee3c9f..832392ca0 100644
|
|
||||||
--- a/tests-mx32/linkat.c
|
|
||||||
+++ b/tests-mx32/linkat.c
|
|
||||||
@@ -19,8 +19,20 @@
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "secontext.h"
|
|
||||||
+#include "xlat.h"
|
|
||||||
#include "xmalloc.h"
|
|
||||||
|
|
||||||
+struct xlat_data secontext_types_data[] = {
|
|
||||||
+ [SECONTEXT_USER] = XLAT_PAIR(SECONTEXT_USER, "user"),
|
|
||||||
+ [SECONTEXT_ROLE] = XLAT_PAIR(SECONTEXT_ROLE, "role"),
|
|
||||||
+ [SECONTEXT_TYPE] = XLAT_PAIR(SECONTEXT_TYPE, "type"),
|
|
||||||
+};
|
|
||||||
+struct xlat secontext_types = {
|
|
||||||
+ .data = secontext_types_data,
|
|
||||||
+ .size = ARRAY_SIZE(secontext_types_data),
|
|
||||||
+ .type = XT_INDEXED,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
mangle_secontext_field(const char *path, enum secontext_field field,
|
|
||||||
const char *new_val, const char *fallback_val)
|
|
||||||
@@ -29,10 +41,18 @@ mangle_secontext_field(const char *path, enum secontext_field field,
|
|
||||||
if (!orig)
|
|
||||||
return;
|
|
||||||
|
|
||||||
- update_secontext_field(path, field,
|
|
||||||
- strcmp(new_val, orig) ? new_val : fallback_val);
|
|
||||||
+ const char *new = strcmp(new_val, orig) ? new_val : fallback_val;
|
|
||||||
|
|
||||||
free(orig);
|
|
||||||
+
|
|
||||||
+ int ret = update_secontext_field(path, field, new);
|
|
||||||
+ if (ret) {
|
|
||||||
+ error_msg_and_skip("Failed to mangle secontext %s for "
|
|
||||||
+ "'%s' to %s: %d",
|
|
||||||
+ sprintxval_abbrev(&secontext_types, field,
|
|
||||||
+ "SECONTEXT_???"),
|
|
||||||
+ path, new, ret);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
@@ -103,8 +123,14 @@ main(void)
|
|
||||||
if (close(fd_sample_2))
|
|
||||||
perror_msg_and_fail("close");
|
|
||||||
|
|
||||||
- if (*sample_1_secontext && strstr(sample_1_secontext, "!!"))
|
|
||||||
- reset_secontext_file(sample_1);
|
|
||||||
+ if (*sample_1_secontext && strstr(sample_1_secontext, "!!")) {
|
|
||||||
+ int ret;
|
|
||||||
+ if ((ret = reset_secontext_file(sample_1))) {
|
|
||||||
+ errno = -ret;
|
|
||||||
+ perror_msg_and_skip("Reset secontext for '%s'",
|
|
||||||
+ sample_1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
free(sample_1_secontext);
|
|
||||||
|
|
||||||
diff --git a/tests-mx32/secontext.c b/tests-mx32/secontext.c
|
|
||||||
index 84c682869..a0463c467 100644
|
|
||||||
--- a/tests-mx32/secontext.c
|
|
||||||
+++ b/tests-mx32/secontext.c
|
|
||||||
@@ -284,14 +284,19 @@ secontext_short_pid(pid_t pid)
|
|
||||||
return FORMAT_SPACE_AFTER(raw_secontext_short_pid(pid));
|
|
||||||
}
|
|
||||||
|
|
||||||
-void reset_secontext_file(const char *file)
|
|
||||||
+int
|
|
||||||
+reset_secontext_file(const char *file)
|
|
||||||
{
|
|
||||||
char *proper_ctx = raw_expected_secontext_full_file(file);
|
|
||||||
- (void) setfilecon(file, proper_ctx);
|
|
||||||
+ int ret = setfilecon(file, proper_ctx);
|
|
||||||
+ if (ret && errno)
|
|
||||||
+ ret = -errno;
|
|
||||||
free(proper_ctx);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void
|
|
||||||
+int
|
|
||||||
update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
const char *newvalue)
|
|
||||||
{
|
|
||||||
@@ -300,7 +305,7 @@ update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
|
|
||||||
char *ctx = raw_secontext_full_file(file);
|
|
||||||
if (ctx == NULL)
|
|
||||||
- return;
|
|
||||||
+ return -1;
|
|
||||||
|
|
||||||
char *saveptr = NULL;
|
|
||||||
char *token;
|
|
||||||
@@ -319,11 +324,15 @@ update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
char *newcontext = xasprintf("%s:%s:%s:%s", split[0], split[1],
|
|
||||||
split[2], split[3]);
|
|
||||||
|
|
||||||
- (void) setfilecon(file, newcontext);
|
|
||||||
+ int ret = setfilecon(file, newcontext);
|
|
||||||
+ if (ret && errno)
|
|
||||||
+ ret = -errno;
|
|
||||||
|
|
||||||
free(newcontext);
|
|
||||||
free(ctx);
|
|
||||||
errno = saved_errno;
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* HAVE_SELINUX_RUNTIME */
|
|
||||||
diff --git a/tests-mx32/secontext.h b/tests-mx32/secontext.h
|
|
||||||
index b5bba2272..dab33e6a5 100644
|
|
||||||
--- a/tests-mx32/secontext.h
|
|
||||||
+++ b/tests-mx32/secontext.h
|
|
||||||
@@ -7,6 +7,8 @@
|
|
||||||
|
|
||||||
#include "tests.h"
|
|
||||||
#include "xmalloc.h"
|
|
||||||
+
|
|
||||||
+#include <errno.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
char *secontext_full_fd(int) ATTRIBUTE_MALLOC;
|
|
||||||
@@ -35,10 +37,10 @@ char *get_secontext_field(const char *full_context, enum secontext_field field);
|
|
||||||
char *get_secontext_field_fd(int fd, enum secontext_field field);
|
|
||||||
char *get_secontext_field_file(const char *file, enum secontext_field field);
|
|
||||||
|
|
||||||
-void reset_secontext_file(const char *file);
|
|
||||||
+int reset_secontext_file(const char *file);
|
|
||||||
|
|
||||||
-void update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
- const char *newvalue);
|
|
||||||
+int update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
+ const char *newvalue);
|
|
||||||
|
|
||||||
# ifdef PRINT_SECONTEXT_FULL
|
|
||||||
|
|
||||||
@@ -81,15 +83,17 @@ get_secontext_field_file(const char *file, enum secontext_field field)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline void
|
|
||||||
+static inline int
|
|
||||||
reset_secontext_file(const char *file)
|
|
||||||
{
|
|
||||||
+ return -ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static inline void
|
|
||||||
+static inline int
|
|
||||||
update_secontext_field(const char *file, enum secontext_field field,
|
|
||||||
const char *newvalue)
|
|
||||||
{
|
|
||||||
+ return -ENOSYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
# define SECONTEXT_FD(fd) xstrdup("")
|
|
||||||
--
|
|
||||||
2.13.6
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
|||||||
From d08dfdebb381427cbd8565994868926ba9bc4b40 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Wed, 30 Oct 2024 15:16:47 +0100
|
|
||||||
Subject: [PATCH 188/190] linux/s390/get_scno.c: use NT_S390_SYSTEM_CALL if
|
|
||||||
gprs[2] is clobbered
|
|
||||||
|
|
||||||
The way the syscall number is retrieved currently relies on the kernel
|
|
||||||
propagating it properly into gprs[2], which is not however always the case;
|
|
||||||
apart of the situation where scno > NR_syscalls, there is also an issue
|
|
||||||
of inspecting it during syscall restart (as it happens on attach, for
|
|
||||||
example), when it is already clobbered by a ERESTART* errno. Luckily
|
|
||||||
for strace, this issue has been already foreseen by the kernel
|
|
||||||
developers, and support for retrieving syscall number on s390
|
|
||||||
via a separate ptrace regset has been added by the Linux commit
|
|
||||||
v3.2-rc1~109^2~34; 13 years later, it is time for it to fulfill
|
|
||||||
its purpose and finally get utilised.
|
|
||||||
|
|
||||||
* src/linux/s390/get_scno.c (arch_get_scno): Try to retrieve the syscall
|
|
||||||
number by querying NT_S390_SYSTEM_CALL regset if gprs[2] contains an errno.
|
|
||||||
|
|
||||||
Complements: v6.11-21-gc7e0ea6d712e "syscall: do not use uninitialized parts of struct ptrace_syscall_info"
|
|
||||||
---
|
|
||||||
src/linux/s390/get_scno.c | 34 ++++++++++++++++++++++++++++++++--
|
|
||||||
1 file changed, 32 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/linux/s390/get_scno.c b/src/linux/s390/get_scno.c
|
|
||||||
index f0863e26d701..fdc94d025280 100644
|
|
||||||
--- a/src/linux/s390/get_scno.c
|
|
||||||
+++ b/src/linux/s390/get_scno.c
|
|
||||||
@@ -9,11 +9,41 @@
|
|
||||||
# define ARCH_REGSET s390_regset
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifndef NT_ARM_SYSTEM_CALL
|
|
||||||
+# define NT_S390_SYSTEM_CALL 0x307
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* Return codes: 1 - ok, 0 - ignore, other - error. */
|
|
||||||
static int
|
|
||||||
arch_get_scno(struct tcb *tcp)
|
|
||||||
{
|
|
||||||
- tcp->scno = ARCH_REGSET.gprs[2] ?
|
|
||||||
- ARCH_REGSET.gprs[2] : ARCH_REGSET.gprs[1];
|
|
||||||
+ typeof(ARCH_REGSET.gprs[2]) gpr2 = ARCH_REGSET.gprs[2];
|
|
||||||
+
|
|
||||||
+ if (gpr2 > (typeof(gpr2)) (-4095ULL)) {
|
|
||||||
+ /*
|
|
||||||
+ * We are in restart_syscall and gprs[2] is clobbered
|
|
||||||
+ * by the errno, using pulling the syscall number
|
|
||||||
+ * via NT_S390_SYSTEM_CALL regset.
|
|
||||||
+ */
|
|
||||||
+ unsigned int scno;
|
|
||||||
+ const struct iovec io = {
|
|
||||||
+ .iov_base = &scno,
|
|
||||||
+ .iov_len = sizeof(scno)
|
|
||||||
+ };
|
|
||||||
+ int rc = ptrace(PTRACE_GETREGSET, tcp->pid, NT_S390_SYSTEM_CALL,
|
|
||||||
+ &io);
|
|
||||||
+ if (rc && errno != ESRCH) {
|
|
||||||
+ perror_func_msg("NT_S390_SYSTEM_CALL pid:%d", tcp->pid);
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+ /*
|
|
||||||
+ * The ptrace call returns thread.system_call, that stores raw
|
|
||||||
+ * int_code, and the syscall number part is the lowest 16 bits
|
|
||||||
+ * of it.
|
|
||||||
+ */
|
|
||||||
+ tcp->scno = scno & 0xffff;
|
|
||||||
+ } else {
|
|
||||||
+ tcp->scno = gpr2 ?: ARCH_REGSET.gprs[1];
|
|
||||||
+ }
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.28.0
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
|||||||
From 1663bf8582b7187d04225105a62bbab9ebbb8109 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Thu, 4 Aug 2022 18:46:41 +0200
|
|
||||||
Subject: [PATCH] prctl: improve PR_SVE_[SG]ET_VL decoding
|
|
||||||
|
|
||||||
* src/prctl.c (sprint_sve_val): Add aux parameter, handle printing based
|
|
||||||
on it.
|
|
||||||
(SYS_FUNC(prctl)): <case PR_SVE_SET_VL>: Pass false as aux
|
|
||||||
to sprint_sve_val.
|
|
||||||
(SYS_FUNC(prctl)): <case PR_SVE_GET_VL>: Pass true as aux
|
|
||||||
to sprint_sve_val; return RVAL_HEX flag.
|
|
||||||
* NEWS: Mention it.
|
|
||||||
---
|
|
||||||
NEWS | 1 +
|
|
||||||
src/prctl.c | 38 +++++++++++++++++++++++++++++---------
|
|
||||||
2 files changed, 30 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/prctl.c b/src/prctl.c
|
|
||||||
index f3bc1a34821d..2611baa5588d 100644
|
|
||||||
--- a/src/prctl.c
|
|
||||||
+++ b/src/prctl.c
|
|
||||||
@@ -64,17 +64,37 @@ print_prctl_args(struct tcb *tcp, const unsigned int first)
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
|
||||||
-sprint_sve_val(kernel_ulong_t arg)
|
|
||||||
+sprint_sve_val(kernel_ulong_t arg, bool aux)
|
|
||||||
{
|
|
||||||
- static char out[sizeof("PR_SVE_SET_VL_ONEXEC|PR_SVE_VL_INHERIT|0x") +
|
|
||||||
- sizeof(kernel_ulong_t) * 2];
|
|
||||||
+ static char out[sizeof("0x /* PR_SVE_SET_VL_ONEXEC|PR_SVE_VL_INHERIT"
|
|
||||||
+ "|0x|0x */") + sizeof(kernel_ulong_t) * 2 * 3];
|
|
||||||
+
|
|
||||||
+ if (xlat_verbose(xlat_verbosity) == XLAT_STYLE_RAW) {
|
|
||||||
+ if (aux)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ xsprintf(out, "%#" PRI_klx, arg);
|
|
||||||
+
|
|
||||||
+ return out;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
kernel_ulong_t vl = arg & PR_SVE_VL_LEN_MASK;
|
|
||||||
kernel_ulong_t flags = arg & ~PR_SVE_VL_LEN_MASK;
|
|
||||||
- const char *flags_str = sprintflags("", pr_sve_vl_flags, flags);
|
|
||||||
|
|
||||||
- xsprintf(out, "%s%s%#" PRI_klx,
|
|
||||||
- flags_str ?: "", flags_str ? "|" : "", vl);
|
|
||||||
+ if (!flags && aux)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ const char *flags_str = sprintflags_ex("", pr_sve_vl_flags, flags, '\0',
|
|
||||||
+ XLAT_STYLE_ABBREV);
|
|
||||||
+
|
|
||||||
+ if (!aux && flags && xlat_verbose(xlat_verbosity) == XLAT_STYLE_VERBOSE)
|
|
||||||
+ {
|
|
||||||
+ xsprintf(out, "%#" PRI_klx " /* %s%s%#" PRI_klx " */",
|
|
||||||
+ arg, flags_str ?: "", flags_str ? "|" : "", vl);
|
|
||||||
+ } else {
|
|
||||||
+ xsprintf(out, "%s%s%#" PRI_klx,
|
|
||||||
+ flags_str ?: "", flags_str ? "|" : "", vl);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
@@ -229,7 +249,7 @@ SYS_FUNC(prctl)
|
|
||||||
case PR_SVE_SET_VL:
|
|
||||||
if (entering(tcp)) {
|
|
||||||
tprint_arg_next();
|
|
||||||
- tprints(sprint_sve_val(arg2));
|
|
||||||
+ tprints(sprint_sve_val(arg2, false));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
ATTRIBUTE_FALLTHROUGH;
|
|
||||||
@@ -240,9 +260,9 @@ SYS_FUNC(prctl)
|
|
||||||
if (syserror(tcp) || tcp->u_rval == 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
- tcp->auxstr = sprint_sve_val(tcp->u_rval);
|
|
||||||
+ tcp->auxstr = sprint_sve_val(tcp->u_rval, true);
|
|
||||||
|
|
||||||
- return RVAL_STR;
|
|
||||||
+ return RVAL_HEX | RVAL_STR;
|
|
||||||
|
|
||||||
case PR_GET_SPECULATION_CTRL:
|
|
||||||
if (entering(tcp)) {
|
|
||||||
--
|
|
||||||
2.28.0
|
|
||||||
|
|
@ -1,130 +0,0 @@
|
|||||||
From 3ed268876dd5b65263449f9aeb18a1cc2604c707 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eugene Syromyatnikov <evgsyr@gmail.com>
|
|
||||||
Date: Tue, 25 Apr 2023 18:11:21 +0200
|
|
||||||
Subject: [PATCH] tests/prctl-sve: fix prctl(PR_SVE_GET_VL) return expected
|
|
||||||
value printing
|
|
||||||
|
|
||||||
* tests/prctl-sve.c: Print the expected return value string based
|
|
||||||
on the value returned, similarly to the way it is done
|
|
||||||
in tests/prctl-sme.c:print_sme_vl_arg().
|
|
||||||
|
|
||||||
Fixes: v5.13~8 "tests: improve test coverage of prctl syscall decoder"
|
|
||||||
Closes: https://github.com/strace/strace/issues/251
|
|
||||||
---
|
|
||||||
tests/prctl-sve.c | 24 ++++++++++++++++++++----
|
|
||||||
1 file changed, 20 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tests/prctl-sve.c b/tests/prctl-sve.c
|
|
||||||
index 4cef149cfec6..216ebfc3f92c 100644
|
|
||||||
--- a/tests/prctl-sve.c
|
|
||||||
+++ b/tests/prctl-sve.c
|
|
||||||
@@ -43,12 +43,28 @@ main(void)
|
|
||||||
(unsigned long) 0xff, sprintrc(rc));
|
|
||||||
|
|
||||||
rc = syscall(__NR_prctl, PR_SVE_GET_VL);
|
|
||||||
- printf("prctl(PR_SVE_GET_VL) = %s", sprintrc(rc));
|
|
||||||
+ printf("prctl(PR_SVE_GET_VL) = ");
|
|
||||||
if (rc >= 0) {
|
|
||||||
- printf(" (PR_SVE_SET_VL_ONEXEC|PR_SVE_VL_INHERIT|%#lx)",
|
|
||||||
- (unsigned long) 0xff);
|
|
||||||
+ printf("%#lx", rc);
|
|
||||||
+ if (rc > 0xffff) {
|
|
||||||
+ printf(" (");
|
|
||||||
+ if (rc & PR_SVE_SET_VL_ONEXEC)
|
|
||||||
+ printf("PR_SVE_SET_VL_ONEXEC");
|
|
||||||
+ if (rc & PR_SVE_VL_INHERIT) {
|
|
||||||
+ printf("%sPR_SVE_VL_INHERIT",
|
|
||||||
+ rc & PR_SVE_SET_VL_ONEXEC ? "|" : "");
|
|
||||||
+ }
|
|
||||||
+ if (rc & ~0x6ffffU) {
|
|
||||||
+ printf("%s%#lx",
|
|
||||||
+ rc & 0x60000 ? "|" : "", rc & ~0x6ffffU);
|
|
||||||
+ }
|
|
||||||
+ printf("|%#lx)\n", rc & 0xffffU);
|
|
||||||
+ } else {
|
|
||||||
+ puts("");
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ puts(sprintrc(rc));
|
|
||||||
}
|
|
||||||
- puts("");
|
|
||||||
|
|
||||||
puts("+++ exited with 0 +++");
|
|
||||||
return 0;
|
|
||||||
diff --git a/tests-m32/prctl-sve.c b/tests-m32/prctl-sve.c
|
|
||||||
index 4cef149cfec6..216ebfc3f92c 100644
|
|
||||||
--- a/tests-m32/prctl-sve.c
|
|
||||||
+++ b/tests-m32/prctl-sve.c
|
|
||||||
@@ -43,12 +43,28 @@ main(void)
|
|
||||||
(unsigned long) 0xff, sprintrc(rc));
|
|
||||||
|
|
||||||
rc = syscall(__NR_prctl, PR_SVE_GET_VL);
|
|
||||||
- printf("prctl(PR_SVE_GET_VL) = %s", sprintrc(rc));
|
|
||||||
+ printf("prctl(PR_SVE_GET_VL) = ");
|
|
||||||
if (rc >= 0) {
|
|
||||||
- printf(" (PR_SVE_SET_VL_ONEXEC|PR_SVE_VL_INHERIT|%#lx)",
|
|
||||||
- (unsigned long) 0xff);
|
|
||||||
+ printf("%#lx", rc);
|
|
||||||
+ if (rc > 0xffff) {
|
|
||||||
+ printf(" (");
|
|
||||||
+ if (rc & PR_SVE_SET_VL_ONEXEC)
|
|
||||||
+ printf("PR_SVE_SET_VL_ONEXEC");
|
|
||||||
+ if (rc & PR_SVE_VL_INHERIT) {
|
|
||||||
+ printf("%sPR_SVE_VL_INHERIT",
|
|
||||||
+ rc & PR_SVE_SET_VL_ONEXEC ? "|" : "");
|
|
||||||
+ }
|
|
||||||
+ if (rc & ~0x6ffffU) {
|
|
||||||
+ printf("%s%#lx",
|
|
||||||
+ rc & 0x60000 ? "|" : "", rc & ~0x6ffffU);
|
|
||||||
+ }
|
|
||||||
+ printf("|%#lx)\n", rc & 0xffffU);
|
|
||||||
+ } else {
|
|
||||||
+ puts("");
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ puts(sprintrc(rc));
|
|
||||||
}
|
|
||||||
- puts("");
|
|
||||||
|
|
||||||
puts("+++ exited with 0 +++");
|
|
||||||
return 0;
|
|
||||||
diff --git a/tests-mx32/prctl-sve.c b/tests-mx32/prctl-sve.c
|
|
||||||
index 4cef149cfec6..216ebfc3f92c 100644
|
|
||||||
--- a/tests-mx32/prctl-sve.c
|
|
||||||
+++ b/tests-mx32/prctl-sve.c
|
|
||||||
@@ -43,12 +43,28 @@ main(void)
|
|
||||||
(unsigned long) 0xff, sprintrc(rc));
|
|
||||||
|
|
||||||
rc = syscall(__NR_prctl, PR_SVE_GET_VL);
|
|
||||||
- printf("prctl(PR_SVE_GET_VL) = %s", sprintrc(rc));
|
|
||||||
+ printf("prctl(PR_SVE_GET_VL) = ");
|
|
||||||
if (rc >= 0) {
|
|
||||||
- printf(" (PR_SVE_SET_VL_ONEXEC|PR_SVE_VL_INHERIT|%#lx)",
|
|
||||||
- (unsigned long) 0xff);
|
|
||||||
+ printf("%#lx", rc);
|
|
||||||
+ if (rc > 0xffff) {
|
|
||||||
+ printf(" (");
|
|
||||||
+ if (rc & PR_SVE_SET_VL_ONEXEC)
|
|
||||||
+ printf("PR_SVE_SET_VL_ONEXEC");
|
|
||||||
+ if (rc & PR_SVE_VL_INHERIT) {
|
|
||||||
+ printf("%sPR_SVE_VL_INHERIT",
|
|
||||||
+ rc & PR_SVE_SET_VL_ONEXEC ? "|" : "");
|
|
||||||
+ }
|
|
||||||
+ if (rc & ~0x6ffffU) {
|
|
||||||
+ printf("%s%#lx",
|
|
||||||
+ rc & 0x60000 ? "|" : "", rc & ~0x6ffffU);
|
|
||||||
+ }
|
|
||||||
+ printf("|%#lx)\n", rc & 0xffffU);
|
|
||||||
+ } else {
|
|
||||||
+ puts("");
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ puts(sprintrc(rc));
|
|
||||||
}
|
|
||||||
- puts("");
|
|
||||||
|
|
||||||
puts("+++ exited with 0 +++");
|
|
||||||
return 0;
|
|
||||||
--
|
|
||||||
2.28.0
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
|||||||
Index: strace-5.17/tests/qual_fault.test
|
|
||||||
===================================================================
|
|
||||||
--- strace-5.17.orig/tests/qual_fault.test 2022-06-09 15:47:28.871554186 +0200
|
|
||||||
+++ strace-5.17/tests/qual_fault.test 2022-06-09 15:50:50.016108370 +0200
|
|
||||||
@@ -83,19 +83,36 @@
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
-for err in '' ENOSYS 22 einval; do
|
|
||||||
+case "$STRACE_ARCH" in
|
|
||||||
+ aarch64)
|
|
||||||
+ ERRS='EnoSys 22'
|
|
||||||
+ NUMBERS1='2'
|
|
||||||
+ NUMBERS2='3'
|
|
||||||
+ NUMBERS3='5'
|
|
||||||
+ NUMBERS4='7'
|
|
||||||
+ ;;
|
|
||||||
+ *)
|
|
||||||
+ ERRS='ENOSYS 22 einval'
|
|
||||||
+ NUMBERS1='1 2 3 7'
|
|
||||||
+ NUMBERS2='1 2 5 11'
|
|
||||||
+ NUMBERS3='1 2 3 7'
|
|
||||||
+ NUMBERS4='1 2 7 11'
|
|
||||||
+ ;;
|
|
||||||
+esac
|
|
||||||
+
|
|
||||||
+for err in '' $(echo $ERRS); do
|
|
||||||
for fault in writev desc,51; do
|
|
||||||
check_fault_injection \
|
|
||||||
writev $fault "$err" '' '' '' 1 -efault=chdir
|
|
||||||
check_fault_injection \
|
|
||||||
writev $fault "$err" '' '' '' 1 -efault=chdir -efault=none
|
|
||||||
- for F in 1 2 3 7; do
|
|
||||||
+ for F in $(echo $NUMBERS1); do
|
|
||||||
check_fault_injection \
|
|
||||||
writev $fault "$err" $F '' '' 1
|
|
||||||
check_fault_injection \
|
|
||||||
writev $fault "$err" $F '' + 1
|
|
||||||
|
|
||||||
- for L in 1 2 5 11; do
|
|
||||||
+ for L in $(echo $NUMBERS2); do
|
|
||||||
[ "$L" -ge "$F" ] ||
|
|
||||||
continue
|
|
||||||
check_fault_injection \
|
|
||||||
@@ -104,12 +121,12 @@
|
|
||||||
writev $fault "$err" $F $L + 1
|
|
||||||
done
|
|
||||||
|
|
||||||
- for S in 1 2 3 7; do
|
|
||||||
+ for S in $(echo $NUMBERS3); do
|
|
||||||
check_fault_injection \
|
|
||||||
writev $fault "$err" $F '' $S 1
|
|
||||||
check_fault_injection \
|
|
||||||
writev $fault "$err" $F '' $S 4
|
|
||||||
- for L in 1 2 7 11; do
|
|
||||||
+ for L in $(echo $NUMBERS4); do
|
|
||||||
[ "$L" -ge "$F" ] ||
|
|
||||||
continue
|
|
||||||
check_fault_injection \
|
|
@ -1,249 +1,145 @@
|
|||||||
Summary: Tracks and displays system calls associated with a running process
|
Summary: Tracks and displays system calls associated with a running process
|
||||||
Name: strace
|
Name: strace
|
||||||
Version: 5.18
|
Version: 6.12
|
||||||
Release: 2.1%{?dist}
|
Release: 1%{?dist}
|
||||||
# The test suite is GPLv2+, all the rest is LGPLv2.1+.
|
# The test suite is GPLv2+, the bundled headers are GPLv2 with Linux syscall
|
||||||
License: LGPL-2.1+ and GPL-2.0+
|
# exception, all the rest is LGPLv2.1+.
|
||||||
Group: Development/Debuggers
|
# https://docs.fedoraproject.org/en-US/legal/license-field/#_no_effective_license_analysis
|
||||||
URL: https://strace.io/
|
# BSD-2-Clause:
|
||||||
Source: https://strace.io/files/%{version}/%{name}-%{version}.tar.xz
|
# bundled/linux/include/uapi/linux/tee.h
|
||||||
|
# BSD-3-Clause:
|
||||||
|
# bundled/linux/include/uapi/linux/quota.h
|
||||||
|
# GPL-1.0-or-later WITH Linux-syscall-note:
|
||||||
|
# bundled/linux/include/uapi/linux/if_bonding.h
|
||||||
|
# bundled/linux/include/uapi/linux/loop.h
|
||||||
|
# GPL-2.0-or-later WITH Linux-syscall-note:
|
||||||
|
# bundled/linux/include/uapi/linux/dm-ioctl.h
|
||||||
|
# bundled/linux/include/uapi/linux/hiddev.h
|
||||||
|
# bundled/linux/include/uapi/linux/if_alg.h
|
||||||
|
# bundled/linux/include/uapi/linux/if_bridge.h
|
||||||
|
# bundled/linux/include/uapi/linux/in6.h
|
||||||
|
# bundled/linux/include/uapi/linux/in.h
|
||||||
|
# bundled/linux/include/uapi/linux/keyctl.h
|
||||||
|
# bundled/linux/include/uapi/linux/mptcp.h
|
||||||
|
# bundled/linux/include/uapi/linux/ptp_clock.h
|
||||||
|
# bundled/linux/include/uapi/linux/tcp.h
|
||||||
|
# bundled/linux/include/uapi/mtd/mtd-abi.h
|
||||||
|
# bundled/linux/include/uapi/mtd/ubi-user.h
|
||||||
|
# LGPL-2.0-or-later WITH Linux-syscall-note:
|
||||||
|
# bundled/linux/include/uapi/linux/dm-ioctl.h
|
||||||
|
# LGPL-2.1-or-later WITH Linux-syscall-note:
|
||||||
|
# bundled/linux/include/uapi/linux/dqblk_xfs.h
|
||||||
|
# bundled/linux/include/uapi/linux/mqueue.h
|
||||||
|
# (GPL-2.0-only WITH Linux-syscall-note) OR Linux-OpenIB:
|
||||||
|
# bundled/linux/include/uapi/linux/tls.h
|
||||||
|
# bundled/linux/include/uapi/rdma/ib_user_verbs.h
|
||||||
|
# (GPL-2.0-only WITH Linux-syscall-note) OR MIT:
|
||||||
|
# bundled/linux/include/uapi/linux/io_uring.h
|
||||||
|
# (GPL-2.0-or-later WITH Linux-syscall-note) OR BSD-3-Clause:
|
||||||
|
# bundled/linux/include/uapi/linux/v4l2-common.h
|
||||||
|
# bundled/linux/include/uapi/linux/v4l2-controls.h
|
||||||
|
# bundled/linux/include/uapi/linux/videodev2.h
|
||||||
|
# GPL-2.0-only WITH Linux-syscall-note:
|
||||||
|
# bundled/linux/include/uapi/asm-generic/hugetlb_encode.h (no explicit license in the file)
|
||||||
|
# bundled/linux/include/uapi/linux/mount.h (no explicit license in the file)
|
||||||
|
# bundled/linux/include/uapi/linux/netfilter/nfnetlink_osf.h (no explicit license in the file)
|
||||||
|
# bundled/linux/include/uapi/linux/version.h (no explicit license in the file)
|
||||||
|
# bundled/linux/include/uapi/asm/hugetlb_encode.h (no explicit license in the file)
|
||||||
|
# the rest of bundled/linux
|
||||||
|
# ISC:
|
||||||
|
# bundled/linux/include/uapi/linux/nfc.h
|
||||||
|
# X11:
|
||||||
|
# build-aux/install-sh (dist only)
|
||||||
|
# LGPL-2.1-or-later:
|
||||||
|
# build-aux/copyright-year-gen
|
||||||
|
# build-aux/file-date-gen
|
||||||
|
# m4/ax_code_coverage.m4
|
||||||
|
# m4/mpers.m4
|
||||||
|
# m4/st_demangle.m4
|
||||||
|
# m4/st_esyscmd_s.m4
|
||||||
|
# m4/st_libdw.m4
|
||||||
|
# m4/st_libunwind.m4
|
||||||
|
# m4/st_save_restore_var.m4
|
||||||
|
# m4/st_selinux.m4
|
||||||
|
# m4/st_stacktrace.m4
|
||||||
|
# m4/st_warn_cflags.m4
|
||||||
|
# GPL-2.0-or-later:
|
||||||
|
# build-aux/ar-lib (dist only)
|
||||||
|
# build-aux/compile (dist only)
|
||||||
|
# build-aux/depcomp (dist only)
|
||||||
|
# build-aux/missing (dist only)
|
||||||
|
# build-aux/test-driver (dist only)
|
||||||
|
# GPL-3.0-or-later:
|
||||||
|
# build-aux/config.guess (dist only)
|
||||||
|
# build-aux/config.sub (dist only)
|
||||||
|
# build-aux/git-version-gen
|
||||||
|
# FSFAP:
|
||||||
|
# README-configure
|
||||||
|
# m4/ax_prog_cc_for_build.m4
|
||||||
|
# m4/ax_valgrind_check.m4
|
||||||
|
# FSFUL:
|
||||||
|
# configure (dist only)
|
||||||
|
# FSFULLR:
|
||||||
|
# m4/warnings.m4
|
||||||
|
# FSFULLRWD:
|
||||||
|
# aclocal.m4 (dist only)
|
||||||
|
# Makefile.in (dist only)
|
||||||
|
# bundled/Makefile.in (dist only)
|
||||||
|
# src/Makefile.in (dist only)
|
||||||
|
# tests/Makefile.in (dist only)
|
||||||
|
# tests-m32/Makefile.in (dist only)
|
||||||
|
# tests-mx32/Makefile.in (dist only)
|
||||||
|
License: LGPL-2.1-or-later AND GPL-2.0-or-later AND GPL-3.0-or-later AND BSD-2-Clause AND BSD-3-Clause AND (GPL-1.0-or-later WITH Linux-syscall-note) AND (GPL-2.0-or-later WITH Linux-syscall-note) AND (GPL-2.0-only WITH Linux-syscall-note) AND (LGPL-2.0-or-later WITH Linux-syscall-note) AND (LGPL-2.1-or-later WITH Linux-syscall-note) AND ((GPL-2.0-only WITH Linux-syscall-note) OR Linux-OpenIB) AND ((GPL-2.0-only WITH Linux-syscall-note) OR MIT) AND ((GPL-2.0-or-later WITH Linux-syscall-note) OR BSD-3-Clause) AND ISC AND X11 AND FSFAP AND FSFUL AND FSFULLR AND FSFULLRWD
|
||||||
|
# Some distros require Group tag to be present,
|
||||||
|
# some require Group tag to be absent,
|
||||||
|
# some do not care about Group tag at all,
|
||||||
|
# and we have to cater for all of them.
|
||||||
|
%if 0%{?fedora} < 28 && 0%{?centos} < 8 && 0%{?rhel} < 8 && 0%{?suse_version} < 1500
|
||||||
|
Group: Development%{?suse_version:/Tools}/Debuggers
|
||||||
|
%endif
|
||||||
|
URL: https://strace.io
|
||||||
|
%if 0%{?fedora} >= 12 || 0%{?centos} >= 6 || 0%{?rhel} >= 6 || 0%{?suse_version} >= 1200
|
||||||
|
Source: https://strace.io/files/%{version}/strace-%{version}.tar.xz
|
||||||
|
BuildRequires: xz
|
||||||
|
%else
|
||||||
|
Source: strace-%{version}.tar.gz
|
||||||
|
%endif
|
||||||
|
BuildRequires: gcc gzip make
|
||||||
|
|
||||||
BuildRequires: libacl-devel time gcc gzip make
|
# Install Bluetooth headers for AF_BLUETOOTH sockets decoding.
|
||||||
|
%if 0%{?fedora} >= 18 || 0%{?centos} >= 6 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1200
|
||||||
BuildRequires: pkgconfig(bluez)
|
BuildRequires: pkgconfig(bluez)
|
||||||
BuildRequires: elfutils-devel binutils-devel
|
%endif
|
||||||
BuildRequires: libselinux-devel
|
|
||||||
|
|
||||||
## Reported by covscan
|
# Install elfutils-devel or libdw-devel to enable strace -k option.
|
||||||
## v5.2-3-g7ada13f "evdev: avoid bit vector decoding on non-successful and 0 return codes"
|
# Install binutils-devel to enable symbol demangling.
|
||||||
#Patch30: 0030-evdev-avoid-bit-vector-decoding-on-non-successful-an.patch
|
%if 0%{?fedora} >= 20 || 0%{?centos} >= 6 || 0%{?rhel} >= 6
|
||||||
## v5.2-4-g96194ed "evdev: fix array size calculation in decode_bitset_"
|
%define buildrequires_stacktrace BuildRequires: elfutils-devel binutils-devel
|
||||||
#Patch31: 0031-evdev-fix-array-size-calculation-in-decode_bitset_.patch
|
%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}
|
||||||
|
|
||||||
### Pre-requisite for "tests: test evdev bitset decoding more thoroughly"
|
# OBS compatibility
|
||||||
## v4.25~89 "tests: check decoding of successful evdev ioctl"
|
%{?!buildroot:BuildRoot: %_tmppath/buildroot-%name-%version-%release}
|
||||||
#Patch32: 0032-tests-check-decoding-of-successful-evdev-ioctl.patch
|
%define maybe_use_defattr %{?suse_version:%%defattr(-,root,root)}
|
||||||
|
|
||||||
## Test for patches "evdev: avoid bit vector decoding on non-successful and 0
|
|
||||||
## return codes" and "evdev: fix array size calculation in decode_bitset_"
|
|
||||||
## v5.2-5-gcdd8206 "tests: test evdev bitset decoding more thoroughly"
|
|
||||||
#Patch33: 0033-tests-test-evdev-bitset-decoding-more-thoroughly.patch
|
|
||||||
|
|
||||||
### https://bugzilla.redhat.com/1747475 https://bugzilla.redhat.com/1747514
|
|
||||||
## v4.26~65 "s390x: beautify sthyi data tail prints"
|
|
||||||
#Patch34: 0034-s390x-beautify-sthyi-data-tail-prints.patch
|
|
||||||
|
|
||||||
## Reported by covscan (https://bugzilla.redhat.com/1747524
|
|
||||||
## https://bugzilla.redhat.com/1747526 https://bugzilla.redhat.com/1747530)
|
|
||||||
## v5.2-84-g91281fec "v4l2: avoid shifting left a signed number by 31 bit"
|
|
||||||
#Patch35: 0035-v4l2-avoid-shifting-left-a-signed-number-by-31-bit.patch
|
|
||||||
## v5.2~21 "syscall.c: avoid infinite loop in subcalls parsing"
|
|
||||||
#Patch36: 0036-syscall.c-avoid-infinite-loop-in-subcalls-parsing.patch
|
|
||||||
## v5.2~19 "kvm: avoid bogus vcpu_info assignment in vcpu_register"
|
|
||||||
#Patch37: 0037-kvm-avoid-bogus-vcpu_info-assignment-in-vcpu_registe.patch
|
|
||||||
## v5.4~97 "xlat: use unsgined type for mount_flags fallback values"
|
|
||||||
#Patch38: 0038-xlat-use-unsgined-type-for-mount_flags-fallback-valu.patch
|
|
||||||
|
|
||||||
## Missing stack traces on attach (https://bugzilla.redhat.com/1788636)
|
|
||||||
## RHEL 7: https://bugzilla.redhat.com/1790052
|
|
||||||
## RHEL 8: https://bugzilla.redhat.com/1790053
|
|
||||||
## RHEL 6 DTS: https://bugzilla.redhat.com/1790058
|
|
||||||
## RHEL 7 DTS: https://bugzilla.redhat.com/1790057
|
|
||||||
## RHEL 8 DTS: https://bugzilla.redhat.com/1790054
|
|
||||||
## v5.4-18-g69b2c33 "unwind-libdw: fix initialization of libdwfl cache"
|
|
||||||
#Patch39: 0039-unwind-libdw-fix-initialization-of-libdwfl-cache.patch
|
|
||||||
## v5.4-27-g35e080a "syscall: do not capture stack trace while the tracee executes strace code"
|
|
||||||
#Patch40: 0040-syscall-do-not-capture-stack-trace-while-the-tracee-.patch
|
|
||||||
## v5.4-63-g8e515c7 "tests: add strace-k-p test"
|
|
||||||
#Patch41: 0041-tests-add-strace-k-p-test.patch
|
|
||||||
|
|
||||||
## https://bugzilla.redhat.com/1746885
|
|
||||||
## v5.2-92-gc108f0b "sockaddr: properly decode sockaddr_hci addresses without hci_channel"
|
|
||||||
#Patch42: 0042-sockaddr-properly-decode-sockaddr_hci-addresses-with.patch
|
|
||||||
|
|
||||||
## Some ipc tests from strace internal testsuite occasionally fail
|
|
||||||
## https://bugzilla.redhat.com/1795251 https://bugzilla.redhat.com/1795261
|
|
||||||
## https://bugzilla.redhat.com/1794490 https://bugzilla.redhat.com/1795273
|
|
||||||
## v5.3~102 "tests: fix expected output for some ipc tests"
|
|
||||||
#Patch43: 0043-tests-fix-expected-output-for-some-ipc-tests.patch
|
|
||||||
## v5.4~49 "tests: fix -a argument in ipc_msgbuf-Xraw test"
|
|
||||||
#Patch44: 0044-tests-fix-a-argument-in-ipc_msgbuf-Xraw-test.patch
|
|
||||||
|
|
||||||
### Update bpf decoder, as bpf-obj_get_info_by_fd-prog-v.gen.test has started
|
|
||||||
### to fail after BPF rebase in RHEL 8.2 kernel.
|
|
||||||
## v5.0~98 "Fix preprocessor indentation", only the bpf_attr.h chunks
|
|
||||||
#Patch45: 0045-Fix-preprocessor-indentation.patch
|
|
||||||
## v5.0~24 "bpf: exclude bit fields from the check"
|
|
||||||
#Patch46: 0046-bpf-exclude-bit-fields-from-the-check.patch
|
|
||||||
## v5.0~23 "bpf: print struct bpf_prog_info.gpl_compatible"
|
|
||||||
#Patch47: 0047-bpf-print-struct-bpf_prog_info.gpl_compatible.patch
|
|
||||||
## v5.0~22 "bpf: add support for btf_* fields in BPF_MAP_CREATE"
|
|
||||||
#Patch48: 0048-bpf-add-support-for-btf_-fields-in-BPF_MAP_CREATE.patch
|
|
||||||
## v5.0~21 "bpf: add support for btf_* fields in struct bpf_map_info"
|
|
||||||
#Patch49: 0049-bpf-add-support-for-btf_-fields-in-struct-bpf_map_in.patch
|
|
||||||
## v5.0~20 "bpf: add support for *jited_ksyms and *jited_func_lens fields in struct bpf_prog_info"
|
|
||||||
#Patch50: 0050-bpf-add-support-for-jited_ksyms-and-jited_func_lens-.patch
|
|
||||||
## v5.0~19 "bpf: add support for new twelve fields in struct bpf_prog_info"
|
|
||||||
#Patch51: 0051-bpf-add-support-for-new-twelve-fields-in-struct-bpf_.patch
|
|
||||||
## v5.1~6 "tests: robustify bpf-obj_get_info_by_fd test against future kernels"
|
|
||||||
#Patch52: 0052-tests-robustify-bpf-obj_get_info_by_fd-test-against-.patch
|
|
||||||
|
|
||||||
## Patches 53-86 were on DTS 9 for
|
|
||||||
## "some devtoolset-9-strace internal tests fail on rhel-alt-7.6"
|
|
||||||
## https://bugzilla.redhat.com/1758201
|
|
||||||
|
|
||||||
## Update io_uring(2) decoder (https://bugzilla.redhat.com/1853011)
|
|
||||||
## v5.5~65 "io_uring: do not depend on kernel header definitions"
|
|
||||||
#Patch87: 0087-io_uring-do-not-depend-on-kernel-header-definitions.patch
|
|
||||||
## v5.5~64 "io_uring: de-indent the switch case statements"
|
|
||||||
#Patch88: 0088-io_uring-de-indent-the-switch-case-statements.patch
|
|
||||||
## v5.3~15 "Add support for printing local arrays to print_array"
|
|
||||||
#Patch89: 0089-Add-support-for-printing-local-arrays-to-print_array.patch
|
|
||||||
## v5.5~63 "Rework interface for printing local arrays"
|
|
||||||
#Patch90: 0090-Rework-interface-for-printing-local-arrays.patch
|
|
||||||
## v5.5~62 "io_uring: decode io_uring_params.resv with IS_ARRAY_ZERO and PRINT_FIELD_ARRAY"
|
|
||||||
#Patch91: 0091-io_uring-decode-io_uring_params.resv-with-IS_ARRAY_Z.patch
|
|
||||||
## v5.5~61 "io_uring: print io_sqring_offsets and io_cqring_offsets reserved fields"
|
|
||||||
#Patch92: 0092-io_uring-print-io_sqring_offsets-and-io_cqring_offse.patch
|
|
||||||
## v5.5~60 "io_uring: add support for IORING_REGISTER_EVENTFD and IORING_UNREGISTER_EVENTFD"
|
|
||||||
#Patch93: 0093-io_uring-add-support-for-IORING_REGISTER_EVENTFD-and.patch
|
|
||||||
## v5.5~59 "io_uring: implement decoding of struct io_uring_params.features"
|
|
||||||
#Patch94: 0094-io_uring-implement-decoding-of-struct-io_uring_param.patch
|
|
||||||
## v5.5~58 "xlat: add IORING_SETUP_CQSIZE to uring_setup_flags"
|
|
||||||
#Patch95: 0095-xlat-add-IORING_SETUP_CQSIZE-to-uring_setup_flags.patch
|
|
||||||
## v5.5~42 "io_uring: check struct io_* types automatically"
|
|
||||||
#Patch96: 0096-io_uring-check-struct-io_-types-automatically.patch
|
|
||||||
## v5.5~41 "io_uring: add support for IORING_REGISTER_FILES_UPDATE"
|
|
||||||
#Patch97: 0097-io_uring-add-support-for-IORING_REGISTER_FILES_UPDAT.patch
|
|
||||||
## v5.5~27 "xlat: update uring_setup_features constants"
|
|
||||||
#Patch98: 0098-xlat-update-uring_setup_features-constants.patch
|
|
||||||
## v5.5~26 "xlat: add IORING_SETUP_CLAMP to uring_setup_flags"
|
|
||||||
#Patch99: 0099-xlat-add-IORING_SETUP_CLAMP-to-uring_setup_flags.patch
|
|
||||||
## v5.5~25 "io_uring: add support of wq_fd field decoding to io_uring_setup"
|
|
||||||
#Patch100: 0100-io_uring-add-support-of-wq_fd-field-decoding-to-io_u.patch
|
|
||||||
## v5.6~190 "tests/io_uring_register: properly handle big endian architectures"
|
|
||||||
#Patch101: 0101-tests-io_uring_register-properly-handle-big-endian-a.patch
|
|
||||||
## v5.6~157 "io_uring: decode IORING_REGISTER_EVENTFD_ASYNC io_uring_reginster command"
|
|
||||||
#Patch102: 0102-io_uring-decode-IORING_REGISTER_EVENTFD_ASYNC-io_uri.patch
|
|
||||||
## v5.6~95 "io_uring: de-indent some code in io_uring_setup decoder"
|
|
||||||
#Patch103: 0103-io_uring-de-indent-some-code-in-io_uring_setup-decod.patch
|
|
||||||
## v5.3~29 "defs.h: introduce {opt,dispatch}_{word,klong}size"
|
|
||||||
#Patch104: 0104-defs.h-introduce-opt-dispatch-_-word-klong-size.patch
|
|
||||||
## v5.3~9 "Handle xlat verbosity in evdev bitset printing"
|
|
||||||
#Patch105: 0105-Handle-xlat-verbosity-in-evdev-bitset-printing.patch
|
|
||||||
## v5.6~94 "io_uring: support IORING_REGISTER_PROBE io_uring_register command"
|
|
||||||
#Patch106: 0106-io_uring-support-IORING_REGISTER_PROBE-io_uring_regi.patch
|
|
||||||
## v5.6~93 "io_uring: add support for IORING_{UN,}REGISTER_PERSONALITY commands"
|
|
||||||
#Patch107: 0107-io_uring-add-support-for-IORING_-UN-REGISTER_PERSONA.patch
|
|
||||||
## v5.6~17 "tests: fix clang compilation warning"
|
|
||||||
#Patch108: 0108-tests-fix-clang-compilation-warning.patch
|
|
||||||
## v5.6~10 "tests: workaround clang compilation warning"
|
|
||||||
#Patch109: 0109-tests-workaround-clang-compilation-warning.patch
|
|
||||||
## v5.7~87 "xlat: add IORING_FEAT_FAST_POLL to uring_setup_features"
|
|
||||||
#Patch110: 0110-xlat-add-IORING_FEAT_FAST_POLL-to-uring_setup_featur.patch
|
|
||||||
## v5.7~85 "xlat: update uring_ops"
|
|
||||||
#Patch111: 0111-xlat-update-uring_ops.patch
|
|
||||||
## v5.7~68 "tests: correct error message in io_uring_register test"
|
|
||||||
#Patch112: 0112-tests-correct-error-message-in-io_uring_register-tes.patch
|
|
||||||
## v5.8~58 "io_uring: Remove struct io_cqring_offsets compile time asserts"
|
|
||||||
#Patch113: 0113-io_uring-Remove-struct-io_cqring_offsets-compile-tim.patch
|
|
||||||
## v5.8~57 "io_uring: Add io_cqring_offset flags"
|
|
||||||
#Patch114: 0114-io_uring-Add-io_cqring_offset-flags.patch
|
|
||||||
## v5.8~47 "xlat: update IORING_* constants"
|
|
||||||
#Patch115: 0115-xlat-update-IORING_-constants.patch
|
|
||||||
## v5.5~71 "macros.h: introduce sizeof_field macro"
|
|
||||||
#Patch116: 0116-macros.h-introduce-sizeof_field-macro.patch
|
|
||||||
## v5.5~49 "types: new infrastructure for automatic checking of structure types"
|
|
||||||
#Patch117: 0117-types-new-infrastructure-for-automatic-checking-of-s.patch
|
|
||||||
## v5.8~59 "types: skip field lines that start with comments"
|
|
||||||
#Patch118: 0118-types-skip-field-lines-that-start-with-comments.patch
|
|
||||||
|
|
||||||
## PID namespace translation support
|
|
||||||
## https://bugzilla.redhat.com/1035434
|
|
||||||
## https://bugzilla.redhat.com/1725113 https://bugzilla.redhat.com/1790836
|
|
||||||
## https://bugzilla.redhat.com/1804334 https://bugzilla.redhat.com/1807458
|
|
||||||
# v5.8~62 "print_fields.h: add PRINT_FIELD_LEN macro"
|
|
||||||
#Patch119: 0119-print_fields.h-add-PRINT_FIELD_LEN-macro.patch
|
|
||||||
## v5.8~61 "Move ilog* functions from util.c to defs.h"
|
|
||||||
#Patch120: 0120-Move-ilog-functions-from-util.c-to-defs.h.patch
|
|
||||||
## v5.8~59 "types: skip field lines that start with comments"
|
|
||||||
#Patch121: 0121-types-skip-field-lines-that-start-with-comments.patch
|
|
||||||
## v5.8~54 "tests/inject-nf.test: replace getpid with geteuid"
|
|
||||||
#Patch122: 0122-tests-inject-nf.test-replace-getpid-with-geteuid.patch
|
|
||||||
## v5.8~18 "fcntl: use print_fields.h macros"
|
|
||||||
#Patch123: 0123-fcntl-use-print_fields.h-macros.patch
|
|
||||||
## v5.8~17 "kcmp: fix KCMP_FILE decoding"
|
|
||||||
#Patch124: 0124-kcmp-fix-KCMP_FILE-decoding.patch
|
|
||||||
## v5.8~15 "printsiginfo: fix printing of siginfo_t.si_pid and siginfo_t.si_uid"
|
|
||||||
#Patch125: 0125-printsiginfo-fix-printing-of-siginfo_t.si_pid-and-si.patch
|
|
||||||
## v5.8~14 "Use PRINT_FIELD_UID instead of printuid where appropriate"
|
|
||||||
#Patch126: 0126-Use-PRINT_FIELD_UID-instead-of-printuid-where-approp.patch
|
|
||||||
## v5.8~10 "Consistently print process ids as signed integers"
|
|
||||||
#Patch127: 0127-Consistently-print-process-ids-as-signed-integers.patch
|
|
||||||
## v5.8~9 "Remove tcb parameter of read_int_from_file"
|
|
||||||
#Patch128: 0128-Remove-tcb-parameter-of-read_int_from_file.patch
|
|
||||||
## v5.8~6 "Add "struct tcb *" parameters to various functions"
|
|
||||||
#Patch129: 0129-Add-struct-tcb-parameters-to-various-functions.patch
|
|
||||||
## v5.8~53 "Modify %process class: trace syscalls associated with process lifecycle"
|
|
||||||
#Patch130: 0130-Modify-process-class-trace-syscalls-associated-with-.patch
|
|
||||||
## v5.8~5 "Introduce SYS_FUNC(tkill)"
|
|
||||||
#Patch131: 0131-Introduce-SYS_FUNC-tkill.patch
|
|
||||||
## v5.8~4 "tests: check decoding of tkill syscall"
|
|
||||||
#Patch132: 0132-tests-check-decoding-of-tkill-syscall.patch
|
|
||||||
## v5.8~3 "tests: check decoding of tgkill syscall"
|
|
||||||
#Patch133: 0133-tests-check-decoding-of-tgkill-syscall.patch
|
|
||||||
## v5.8-5-gdea0284 "PID namespace translation support"
|
|
||||||
#Patch134: 0134-PID-namespace-translation-support.patch
|
|
||||||
## v5.8-6-g173257d "Use printpid in decoders"
|
|
||||||
#Patch135: 0135-Use-printpid-in-decoders.patch
|
|
||||||
## v5.8-7-g18c2208 "Use get_proc_pid for /proc paths"
|
|
||||||
#Patch136: 0136-Use-get_proc_pid-for-proc-paths.patch
|
|
||||||
## v5.8-8-g7ecee07 "Implement testing framework for pidns"
|
|
||||||
#Patch137: 0137-Implement-testing-framework-for-pidns.patch
|
|
||||||
## v5.8-9-gf350ce0 "Add tests for PID namespace translation"
|
|
||||||
#Patch138: 0138-Add-tests-for-PID-namespace-translation.patch
|
|
||||||
|
|
||||||
## v5.12~55 "tests: add fchmod-y test"
|
|
||||||
#Patch142: 0142-tests-add-fchmod-y-test.patch
|
|
||||||
## v5.12~54 "tests: introduce create_and_enter_subdir and leave_and_remove_subdir"
|
|
||||||
#Patch143: 0143-tests-introduce-create_and_enter_subdir-and-leave_an.patch
|
|
||||||
## v5.8~36 "tests: check decoding of faccessat syscall in -P, -y, and -yy modes"
|
|
||||||
#Patch144: 0144-tests-check-decoding-of-faccessat-syscall-in-P-y-and.patch
|
|
||||||
## v5.12~97 "xmalloc: introduce xasprintf"
|
|
||||||
#Patch145: 0145-xmalloc-introduce-xasprintf.patch
|
|
||||||
## v5.12~96 "tests: use xasprintf instead of asprintf"
|
|
||||||
#Patch146: 0146-tests-use-xasprintf-instead-of-asprintf.patch
|
|
||||||
## v5.12~156 "file_handle: print f_handle as a hexadecimal string"
|
|
||||||
#Patch147: 0147-file_handle-print-f_handle-as-a-hexadecimal-string.patch
|
|
||||||
## v5.10~47 "tests: fix execve test with fresh linux kernels"
|
|
||||||
#Patch148: 0148-tests-fix-execve-test-with-fresh-linux-kernels.patch
|
|
||||||
## v5.12~49 "Implement --secontext[=full] option to display SELinux contexts"
|
|
||||||
#Patch149: 0149-Implement-secontext-full-option-to-display-SELinux-c.patch
|
|
||||||
# v5.13-14-g9623154 "m4/mpers.m4: generate HAVE_*_SELINUX_RUNTIME config defines"
|
|
||||||
#Patch155: 0155-m4-mpers.m4-generate-HAVE_-_SELINUX_RUNTIME-config-d.patch
|
|
||||||
|
|
||||||
## v5.9~28 "Introduce GLIBC_PREREQ_GE and GLIBC_PREREQ_LT macros"
|
|
||||||
#Patch156: 0156-Introduce-GLIBC_PREREQ_GE-and-GLIBC_PREREQ_LT-macros.patch
|
|
||||||
## v5.9~27 "tests/ipc_msg.c: disable TEST_MSGCTL_BOGUS_ADDR on glibc >= 2.32"
|
|
||||||
#Patch157: 0157-tests-ipc_msg.c-disable-TEST_MSGCTL_BOGUS_ADDR-on-gl.patch
|
|
||||||
## v5.10~46 "tests: disable TEST_MSGCTL_BOGUS_ADDR in ipc_msg test on glibc >= 2.31"
|
|
||||||
#Patch158: 0158-tests-disable-TEST_MSGCTL_BOGUS_ADDR-in-ipc_msg-test.patch
|
|
||||||
## v5.10~22 "tests: disable tests for invalid msgctl commands on glibc >= 2.32"
|
|
||||||
#Patch159: 0159-tests-disable-tests-for-invalid-msgctl-commands-on-g.patch
|
|
||||||
## v5.9~11 "tests: disable shmctl IPC_STAT test with a bogus address on glibc >= 2.32"
|
|
||||||
#Patch160: 0160-tests-disable-shmctl-IPC_STAT-test-with-a-bogus-addr.patch
|
|
||||||
## v5.9~10 "tests: disable tests for invalid shmctl commands on glibc >= 2.32"
|
|
||||||
#Patch161: 0161-tests-disable-tests-for-invalid-shmctl-commands-on-g.patch
|
|
||||||
## v5.9~12 "tests: disable tests for invalid semctl commands on glibc >= 2.32"
|
|
||||||
#Patch162: 0162-tests-disable-tests-for-invalid-semctl-commands-on-g.patch
|
|
||||||
|
|
||||||
|
## v5.13-10-g0211fdc "tests: change sockopt-timestamp test to use syscall(__NR_recvmsg)"
|
||||||
|
#Patch141: 0141-tests-change-sockopt-timestamp-test-to-use-syscall-_.patch
|
||||||
## v5.13-55-g6b2191f "filter_qualify: free allocated data on the error path exit of parse_poke_token"
|
## v5.13-55-g6b2191f "filter_qualify: free allocated data on the error path exit of parse_poke_token"
|
||||||
#Patch163: 0163-filter_qualify-free-allocated-data-on-the-error-path.patch
|
#Patch150: 0150-filter_qualify-free-allocated-data-on-the-error-path.patch
|
||||||
## v5.13-56-g80dc60c "macros: expand BIT macros, add MASK macros; add *_SAFE macros"
|
## v5.13-56-g80dc60c "macros: expand BIT macros, add MASK macros; add *_SAFE macros"
|
||||||
#Patch164: 0164-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch
|
#Patch151: 0151-macros-expand-BIT-macros-add-MASK-macros-add-_SAFE-m.patch
|
||||||
## v5.13-58-g94ae5c2 "trie: use BIT* and MASK* macros"
|
## v5.13-58-g94ae5c2 "trie: use BIT* and MASK* macros"
|
||||||
#Patch165: 0165-trie-use-BIT-and-MASK-macros.patch
|
#Patch152: 0152-trie-use-BIT-and-MASK-macros.patch
|
||||||
## v5.13-65-g41b753e "tee: rewrite num_params access in tee_fetch_buf_data"
|
## v5.13-65-g41b753e "tee: rewrite num_params access in tee_fetch_buf_data"
|
||||||
#Patch166: 0166-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch
|
#Patch153: 0153-tee-rewrite-num_params-access-in-tee_fetch_buf_data.patch
|
||||||
|
## v5.14~12 "tests: call setsockopt directly in sockopt-timestamp"
|
||||||
|
#Patch154: 0154-tests-call-setsockopt-directly-in-sockopt-timestamp.patch
|
||||||
|
|
||||||
## v5.15~1 "print_ifindex: fix IFNAME_QUOTED_SZ definition"
|
## v5.15~1 "print_ifindex: fix IFNAME_QUOTED_SZ definition"
|
||||||
#Patch167: 0167-print_ifindex-fix-IFNAME_QUOTED_SZ-definition.patch
|
#Patch167: 0167-print_ifindex-fix-IFNAME_QUOTED_SZ-definition.patch
|
||||||
@ -258,90 +154,48 @@ BuildRequires: libselinux-devel
|
|||||||
#Patch173: 0173-tests-secontext-eliminate-separate-secontext_format-.patch
|
#Patch173: 0173-tests-secontext-eliminate-separate-secontext_format-.patch
|
||||||
#Patch174: 0174-tests-linkat-reset-context-to-the-expected-one-if-a-.patch
|
#Patch174: 0174-tests-linkat-reset-context-to-the-expected-one-if-a-.patch
|
||||||
|
|
||||||
## https://bugzilla.redhat.com/2103068 covscan fixes
|
### https://bugzilla.redhat.com/2103068 covscan fixes
|
||||||
# v5.18-5-g2bf0696 "src/xlat: remove remnants of unnecessary idx usage in xlookup"
|
## v5.18-5-g2bf0696 "src/xlat: remove remnants of unnecessary idx usage in xlookup"
|
||||||
Patch175: 0175-src-xlat-remove-remnants-of-unnecessary-idx-usage-in.patch
|
#Patch175: 0175-src-xlat-remove-remnants-of-unnecessary-idx-usage-in.patch
|
||||||
# v5.18-7-ge604d7b "strauss: tips whitespace and phrasing cleanups"
|
## v5.18-7-ge604d7b "strauss: tips whitespace and phrasing cleanups"
|
||||||
Patch176: 0176-strauss-tips-whitespace-and-phrasing-cleanups.patch
|
#Patch176: 0176-strauss-tips-whitespace-and-phrasing-cleanups.patch
|
||||||
# v5.18-8-g968789d "strauss: fix off-by-one error in strauss array access"
|
## v5.18-8-g968789d "strauss: fix off-by-one error in strauss array access"
|
||||||
Patch177: 0177-strauss-fix-off-by-one-error-in-strauss-array-access.patch
|
#Patch177: 0177-strauss-fix-off-by-one-error-in-strauss-array-access.patch
|
||||||
# v5.18-9-g6d3e97e "util: add offs sanity check to print_clock_t"
|
## v5.18-9-g6d3e97e "util: add offs sanity check to print_clock_t"
|
||||||
Patch178: 0178-util-add-offs-sanity-check-to-print_clock_t.patch
|
#Patch178: 0178-util-add-offs-sanity-check-to-print_clock_t.patch
|
||||||
|
|
||||||
## https://bugzilla.redhat.com/2087693
|
### https://bugzilla.redhat.com/2087693
|
||||||
# v5.18-13-g960e78f "secontext: print context of Unix socket's sun_path field"
|
## v5.18-13-g960e78f "secontext: print context of Unix socket's sun_path field"
|
||||||
Patch179: 0179-secontext-print-context-of-Unix-socket-s-sun_path-fi.patch
|
#Patch179: 0179-secontext-print-context-of-Unix-socket-s-sun_path-fi.patch
|
||||||
# v5.18-18-g676979f "pathtrace, util: do not print " (deleted)" as part of the path"
|
## v5.18-18-g676979f "pathtrace, util: do not print " (deleted)" as part of the path"
|
||||||
Patch180: 0180-pathtrace-util-do-not-print-deleted-as-part-of-the-p.patch
|
#Patch180: 0180-pathtrace-util-do-not-print-deleted-as-part-of-the-p.patch
|
||||||
# v5.18-19-g3f0e534 "secontext: fix expected SELinux context check for unlinked FDs"
|
## v5.18-19-g3f0e534 "secontext: fix expected SELinux context check for unlinked FDs"
|
||||||
Patch181: 0181-secontext-fix-expected-SELinux-context-check-for-unl.patch
|
#Patch181: 0181-secontext-fix-expected-SELinux-context-check-for-unl.patch
|
||||||
|
|
||||||
## https://bugzilla.redhat.com/2103137
|
### https://bugzilla.redhat.com/2103137
|
||||||
# v5.18-21-g5338636 "tests/bpf: fix sloppy low FD number usage"
|
## v5.18-21-g5338636 "tests/bpf: fix sloppy low FD number usage"
|
||||||
Patch182: 0182-tests-bpf-fix-sloppy-low-FD-number-usage.patch
|
#Patch182: 0182-tests-bpf-fix-sloppy-low-FD-number-usage.patch
|
||||||
|
|
||||||
## https://issues.redhat.com/browse/RHEL-8570
|
### https://issues.redhat.com/browse/RHEL-8570
|
||||||
# v6.11-21-gc7e0ea6d7 "syscall: do not use uninitialized parts of struct ptrace_syscall_info"
|
## v6.11-21-gc7e0ea6d7 "syscall: do not use uninitialized parts of struct ptrace_syscall_info"
|
||||||
Patch183: 0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch
|
#Patch183: 0183-syscall-do-not-use-uninitialized-parts-of-struct-ptr.patch
|
||||||
# v6.11-22-g2048c136b "startup_tcb: add a comment"
|
## v6.11-22-g2048c136b "startup_tcb: add a comment"
|
||||||
Patch184: 0184-startup_tcb-add-a-comment.patch
|
#Patch184: 0184-startup_tcb-add-a-comment.patch
|
||||||
# v6.11-23-g3bf08cbb3 "tests: add another test of restart_syscall decoding"
|
## v6.11-23-g3bf08cbb3 "tests: add another test of restart_syscall decoding"
|
||||||
Patch185: 0185-tests-add-another-test-of-restart_syscall-decoding.patch
|
#Patch185: 0185-tests-add-another-test-of-restart_syscall-decoding.patch
|
||||||
|
|
||||||
## kernel-5.14.0-417.el9~9 (RHEL 9.4+) has v6.8-rc1~131^2~223 "tcp: Dump bound-only sockets in inet_diag."
|
### kernel-5.14.0-417.el9~9 (RHEL 9.4+) has v6.8-rc1~131^2~223 "tcp: Dump bound-only sockets in inet_diag."
|
||||||
# v6.9~27 "tests: workaround net-yy-inet* for new kernels"
|
## v6.9~27 "tests: workaround net-yy-inet* for new kernels"
|
||||||
Patch186: 0186-tests-workaround-net-yy-inet-for-new-kernels.patch
|
#Patch186: 0186-tests-workaround-net-yy-inet-for-new-kernels.patch
|
||||||
## Update linkat--secontext_mismatch test to fix the failures reported by QE
|
### Update linkat--secontext_mismatch test to fix the failures reported by QE
|
||||||
# v6.11~4 "tests: avoid linkat--secontext_mismatch failures on setfilecon errors"
|
## v6.11~4 "tests: avoid linkat--secontext_mismatch failures on setfilecon errors"
|
||||||
Patch187: 0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch
|
#Patch187: 0187-tests-avoid-linkat-secontext_mismatch-failures-on-se.patch
|
||||||
# "linux/s390/get_scno.c: use NT_S390_SYSTEM_CALL if gprs[2] is clobbered"
|
## "linux/s390/get_scno.c: use NT_S390_SYSTEM_CALL if gprs[2] is clobbered"
|
||||||
Patch188: 0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch
|
#Patch188: 0188-linux-s390-get_scno.c-use-NT_S390_SYSTEM_CALL-if-gpr.patch
|
||||||
### Skip these two patches present in RHEL 9/10 as sockopt-sol_socket test doesn't exist in strace-5.18
|
|
||||||
## "tests: move k_setsockopt definition into a separate"
|
## "tests: move k_setsockopt definition into a separate"
|
||||||
#Patch189: 0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch
|
#Patch189: 0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch
|
||||||
## "tests/sockopt-timestamp.c: use k_getsockopt and k_setsockopt"
|
## "tests/sockopt-timestamp.c: use k_getsockopt and k_setsockopt"
|
||||||
#Patch190: 0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch
|
#Patch190: 0190-tests-sockopt-timestamp.c-use-k_getsockopt-and-k_set.patch
|
||||||
## Fix for prctl-sve.gen test failure on aarch64
|
|
||||||
# v5.19~14 "prctl: improve PR_SVE_[SG]ET_VL decoding"
|
|
||||||
Patch191: 0191-prctl-improve-PR_SVE_-SG-ET_VL-decoding.patch
|
|
||||||
# v6.3~32 "tests/prctl-sve: fix prctl(PR_SVE_GET_VL) return expected value printing"
|
|
||||||
Patch192: 0192-tests-prctl-sve-fix-prctl-PR_SVE_GET_VL-return-expec.patch
|
|
||||||
|
|
||||||
### Wire up rseq and kexec_file_load in order to avoid kexec_file_load
|
|
||||||
### test failure on aarch64. Addresses https://bugzilla.redhat.com/1676045
|
|
||||||
### ("strace: FTBFS in Fedora rawhide/f30").
|
|
||||||
## v5.0~62 "Wire up rseq syscall on architectures that use generic unistd.h"
|
|
||||||
#Patch1000: 1000-Wire-up-rseq-syscall-on-architectures-that-use-gener.patch
|
|
||||||
## v5.0~61 "Wire up kexec_file_load syscall on architectures that use generic unistd.h"
|
|
||||||
#Patch1001: 1001-Wire-up-kexec_file_load-syscall-on-architectures-tha.patch
|
|
||||||
|
|
||||||
### RHEL7-only: headers on some builders do not provide O_TMPFILE
|
|
||||||
#Patch2000: 2000-strace-provide-O_TMPFILE-fallback-definition.patch
|
|
||||||
## RHEL-only: aarch64 brew builders are extremely slow on qual_fault.test
|
|
||||||
Patch2001: 2001-limit-qual_fault-scope-on-aarch64.patch
|
|
||||||
### RHEL8.2-only: disable ksysent test due to missing rebase
|
|
||||||
#Patch2002: 2002-disable-ksysent-on-8.2.patch
|
|
||||||
### RHEL-only: avoid ARRAY_SIZE macro re-definition in libiberty.h
|
|
||||||
## No longer needed, since upstream commit v5.14~14
|
|
||||||
#Patch2003: 2003-undef-ARRAY_SIZE.patch
|
|
||||||
### RHEL-only: glibc-2.32.9000-147-ga16d2abd496bd974a882,
|
|
||||||
### glibc-2.32.9000-149-gbe9b0b9a012780a403a2 and
|
|
||||||
### glibc-2.32.9000-207-g9ebaabeaac1a96b0d91f have been backported in RHEL.
|
|
||||||
## No longer needed, since upstream commit v5.15~9
|
|
||||||
#Patch2004: 2004-glibc-msgctl-semctl-shmctl-backport-workaround.patch
|
|
||||||
|
|
||||||
|
|
||||||
# We no longer need to build a separate strace32 binary, but we don't want
|
|
||||||
# to break existing strace32 users' workflows.
|
|
||||||
%define strace32_arches ppc64 s390x
|
|
||||||
|
|
||||||
%ifarch %{strace32_arches}
|
|
||||||
%define _isa_compat %{?__isa_name:(%{__isa_name}-32)}%{!?__isa:%{nil}}
|
|
||||||
%define evr %{?epoch:%{epoch}:}%{version}-%{release}
|
|
||||||
Provides: strace32 = %{evr}
|
|
||||||
# strace32 was a real package before strace-4.24 in RHEL
|
|
||||||
Obsoletes: strace32 < 4.24
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# Fallback definitions for make_build/make_install macros
|
# Fallback definitions for make_build/make_install macros
|
||||||
%{?!__make: %global __make %_bindir/make}
|
%{?!__make: %global __make %_bindir/make}
|
||||||
@ -362,102 +216,15 @@ received by a process.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
#%patch30 -p1
|
#%patch141 -p1
|
||||||
#%patch31 -p1
|
#%patch150 -p1
|
||||||
#%patch32 -p1
|
#%patch151 -p1
|
||||||
#%patch33 -p1
|
#%patch152 -p1
|
||||||
#%patch34 -p1
|
#%patch153 -p1
|
||||||
#%patch35 -p1
|
#%patch154 -p1
|
||||||
#%patch36 -p1
|
|
||||||
#%patch37 -p1
|
|
||||||
#%patch38 -p1
|
|
||||||
#%patch39 -p1
|
|
||||||
#%patch40 -p1
|
|
||||||
#%patch41 -p1
|
|
||||||
#%patch42 -p1
|
|
||||||
#%patch43 -p1
|
|
||||||
#%patch44 -p1
|
|
||||||
#%patch45 -p1
|
|
||||||
#%patch46 -p1
|
|
||||||
#%patch47 -p1
|
|
||||||
#%patch48 -p1
|
|
||||||
#%patch49 -p1
|
|
||||||
#%patch50 -p1
|
|
||||||
#%patch51 -p1
|
|
||||||
#%patch52 -p1
|
|
||||||
#%patch87 -p1
|
|
||||||
#%patch88 -p1
|
|
||||||
#%patch89 -p1
|
|
||||||
#%patch90 -p1
|
|
||||||
#%patch91 -p1
|
|
||||||
#%patch92 -p1
|
|
||||||
#%patch93 -p1
|
|
||||||
#%patch94 -p1
|
|
||||||
#%patch95 -p1
|
|
||||||
#%patch96 -p1
|
|
||||||
#%patch97 -p1
|
|
||||||
#%patch98 -p1
|
|
||||||
#%patch99 -p1
|
|
||||||
#%patch100 -p1
|
|
||||||
#%patch101 -p1
|
|
||||||
#%patch102 -p1
|
|
||||||
#%patch103 -p1
|
|
||||||
#%patch104 -p1
|
|
||||||
#%patch105 -p1
|
|
||||||
#%patch106 -p1
|
|
||||||
#%patch107 -p1
|
|
||||||
#%patch108 -p1
|
|
||||||
#%patch109 -p1
|
|
||||||
#%patch110 -p1
|
|
||||||
#%patch111 -p1
|
|
||||||
#%patch112 -p1
|
|
||||||
#%patch113 -p1
|
|
||||||
#%patch114 -p1
|
|
||||||
#%patch115 -p1
|
|
||||||
#%patch116 -p1
|
|
||||||
#%patch117 -p1
|
|
||||||
#%patch118 -p1
|
|
||||||
#%patch119 -p1
|
|
||||||
#%patch120 -p1
|
|
||||||
#%patch121 -p1
|
|
||||||
#%patch122 -p1
|
|
||||||
#%patch123 -p1
|
|
||||||
#%patch124 -p1
|
|
||||||
#%patch125 -p1
|
|
||||||
#%patch126 -p1
|
|
||||||
#%patch127 -p1
|
|
||||||
#%patch128 -p1
|
|
||||||
#%patch129 -p1
|
|
||||||
#%patch130 -p1
|
|
||||||
#%patch131 -p1
|
|
||||||
#%patch132 -p1
|
|
||||||
#%patch133 -p1
|
|
||||||
#%patch134 -p1
|
|
||||||
#%patch135 -p1
|
|
||||||
#%patch136 -p1
|
|
||||||
#%patch137 -p1
|
|
||||||
#%patch138 -p1
|
|
||||||
#%patch142 -p1
|
|
||||||
#%patch143 -p1
|
|
||||||
#%patch144 -p1
|
|
||||||
#%patch145 -p1
|
|
||||||
#%patch146 -p1
|
|
||||||
#%patch147 -p1
|
|
||||||
#%patch148 -p1
|
|
||||||
#%patch149 -p1
|
|
||||||
#%patch155 -p1
|
|
||||||
#%patch156 -p1
|
|
||||||
#%patch157 -p1
|
|
||||||
#%patch158 -p1
|
|
||||||
#%patch159 -p1
|
|
||||||
#%patch160 -p1
|
|
||||||
#%patch161 -p1
|
|
||||||
#%patch162 -p1
|
|
||||||
#%patch163 -p1
|
|
||||||
#%patch164 -p1
|
|
||||||
#%patch165 -p1
|
|
||||||
#%patch166 -p1
|
|
||||||
#%patch167 -p1
|
#%patch167 -p1
|
||||||
|
|
||||||
#%patch168 -p1
|
#%patch168 -p1
|
||||||
#%patch169 -p1
|
#%patch169 -p1
|
||||||
#%patch170 -p1
|
#%patch170 -p1
|
||||||
@ -466,42 +233,31 @@ received by a process.
|
|||||||
#%patch173 -p1
|
#%patch173 -p1
|
||||||
#%patch174 -p1
|
#%patch174 -p1
|
||||||
|
|
||||||
%patch175 -p1
|
#%patch175 -p1
|
||||||
%patch176 -p1
|
#%patch176 -p1
|
||||||
%patch177 -p1
|
#%patch177 -p1
|
||||||
%patch178 -p1
|
#%patch178 -p1
|
||||||
%patch179 -p1
|
#%patch179 -p1
|
||||||
%patch180 -p1
|
#%patch180 -p1
|
||||||
%patch181 -p1
|
#%patch181 -p1
|
||||||
%patch182 -p1
|
#%patch182 -p1
|
||||||
|
|
||||||
%patch183 -p1
|
#%patch183 -p1
|
||||||
%patch184 -p1
|
#%patch184 -p1
|
||||||
%patch185 -p1
|
#%patch185 -p1
|
||||||
|
|
||||||
%patch186 -p1
|
#%patch186 -p1
|
||||||
%patch187 -p1
|
#%patch187 -p1
|
||||||
%patch188 -p1
|
#%patch188 -p1
|
||||||
#%patch189 -p1
|
#%patch189 -p1
|
||||||
#%patch190 -p1
|
#%patch190 -p1
|
||||||
%patch191 -p1
|
|
||||||
%patch192 -p1
|
|
||||||
|
|
||||||
#%patch1000 -p1
|
|
||||||
#%patch1001 -p1
|
|
||||||
|
|
||||||
#%patch2000 -p1
|
|
||||||
%patch2001 -p1
|
|
||||||
#%patch2002 -p1
|
|
||||||
#%patch2003 -p1
|
|
||||||
#%patch2004 -p1
|
|
||||||
|
|
||||||
chmod a+x tests/*.test
|
chmod a+x tests/*.test
|
||||||
|
|
||||||
echo -n %version-%release > .tarball-version
|
echo -n %version-%release > .tarball-version
|
||||||
echo -n 2022 > .year
|
echo -n 2024 > .year
|
||||||
echo -n 2022-06-22 > doc/.strace.1.in.date
|
echo -n 2024-02-01 > doc/.strace.1.in.date
|
||||||
echo -n 2022-06-22 > doc/.strace-log-merge.1.in.date
|
echo -n 2024-02-01 > doc/.strace-log-merge.1.in.date
|
||||||
|
|
||||||
%build
|
%build
|
||||||
echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION'
|
echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION'
|
||||||
@ -512,34 +268,26 @@ file -L /bin/sh
|
|||||||
gcc --version |head -1
|
gcc --version |head -1
|
||||||
ld --version |head -1
|
ld --version |head -1
|
||||||
kver="$(printf '%%s\n%%s\n' '#include <linux/version.h>' 'LINUX_VERSION_CODE' | gcc -E -P -)"
|
kver="$(printf '%%s\n%%s\n' '#include <linux/version.h>' 'LINUX_VERSION_CODE' | gcc -E -P -)"
|
||||||
printf 'kernel-headers %%s.%%s.%%s\n' $(($kver/65536)) $(($kver/256%%256)) $(($kver%%256))
|
printf 'kernel-headers %%s.%%s.%%s\n' $((kver/65536)) $((kver/256%%256)) $((kver%%256))
|
||||||
echo 'END OF BUILD ENVIRONMENT INFORMATION'
|
echo 'END OF BUILD ENVIRONMENT INFORMATION'
|
||||||
|
|
||||||
CFLAGS=" $RPM_OPT_FLAGS $LDFLAGS "
|
CFLAGS="$RPM_OPT_FLAGS $LDFLAGS"
|
||||||
# Removing explicit -m64 as it breaks mpers
|
# Removing explicit -m64 as it breaks mpers
|
||||||
[ "x${CFLAGS#* -m64 }" = "x${CFLAGS}" ] || CFLAGS=$(echo "$CFLAGS" | sed 's/ -m64 / /g')
|
[ "x${CFLAGS#*-m64}" = "x${CFLAGS}" ] || CFLAGS=$(echo "$CFLAGS" | sed 's/-m64//g')
|
||||||
export CFLAGS
|
export CFLAGS
|
||||||
|
|
||||||
CPPFLAGS=" -isystem %{_includedir} %{optflags} "
|
CPPFLAGS="%{optflags}"
|
||||||
# Removing explicit -m64 as it breaks mpers
|
# Removing explicit -m64 as it breaks mpers
|
||||||
[ "x${CPPFLAGS#* -m64 }" = "x${CPPFLAGS}" ] || CPPFLAGS=$(echo "$CPPFLAGS" | sed 's/ -m64 / /g')
|
[ "x${CPPFLAGS#*-m64}" = "x${CPPFLAGS}" ] || CPPFLAGS=$(echo "$CPPFLAGS" | sed 's/-m64//g')
|
||||||
export CPPFLAGS
|
export CPPFLAGS
|
||||||
|
|
||||||
CFLAGS_FOR_BUILD="$RPM_OPT_FLAGS"; export CFLAGS_FOR_BUILD
|
CFLAGS_FOR_BUILD="$RPM_OPT_FLAGS"; export CFLAGS_FOR_BUILD
|
||||||
%configure --enable-mpers=check --with-libdw --with-libiberty
|
%configure --enable-mpers=check --enable-bundled=yes
|
||||||
%make_build
|
%make_build
|
||||||
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%make_install
|
%make_install
|
||||||
|
|
||||||
%ifarch %{strace32_arches}
|
|
||||||
ln -s ./strace %{buildroot}%{_bindir}/strace32
|
|
||||||
%endif
|
|
||||||
|
|
||||||
# remove unpackaged files from the buildroot
|
|
||||||
rm -f %{buildroot}%{_bindir}/strace-graph
|
|
||||||
|
|
||||||
# some say uncompressed changelog files are too big
|
# some say uncompressed changelog files are too big
|
||||||
for f in ChangeLog ChangeLog-CVS; do
|
for f in ChangeLog ChangeLog-CVS; do
|
||||||
gzip -9n < "$f" > "$f".gz &
|
gzip -9n < "$f" > "$f".gz &
|
||||||
@ -547,141 +295,123 @@ done
|
|||||||
wait
|
wait
|
||||||
|
|
||||||
%check
|
%check
|
||||||
# This is needed since patch does not set x bit to the newly created files
|
width=$(echo __LONG_WIDTH__ |%__cc -E -P -)
|
||||||
chmod u+x tests/*.test tests-m32/*.test tests-mx32/*.test
|
skip_32bit=0
|
||||||
|
%if 0%{?fedora} >= 35 || 0%{?rhel} > 9
|
||||||
|
skip_32bit=1
|
||||||
|
%endif
|
||||||
|
|
||||||
%{buildroot}%{_bindir}/strace -V
|
if [ "${width}" != 32 ] || [ "${skip_32bit}" != 1 ]; then
|
||||||
|
%{buildroot}%{_bindir}/strace -V
|
||||||
# We have to limit concurrent execution of tests as some time-sensitive tests
|
%make_build -k check VERBOSE=1
|
||||||
# start to fail if the reported time is way too off from the expected one.
|
echo 'BEGIN OF TEST SUITE INFORMATION'
|
||||||
%make_build -k check VERBOSE=1 V=1
|
tail -n 99999 -- tests*/test-suite.log tests*/ksysent.gen.log
|
||||||
echo 'BEGIN OF TEST SUITE INFORMATION'
|
find tests* -type f -name '*.log' -print0 |
|
||||||
tail -n 99999 -- tests*/test-suite.log tests*/ksysent.gen.log
|
|
||||||
find tests* -type f -name '*.log' -print0 |
|
|
||||||
xargs -r0 grep -H '^KERNEL BUG:' -- ||:
|
xargs -r0 grep -H '^KERNEL BUG:' -- ||:
|
||||||
echo 'END OF TEST SUITE INFORMATION'
|
echo 'END OF TEST SUITE INFORMATION'
|
||||||
|
fi
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%maybe_use_defattr
|
||||||
%doc CREDITS ChangeLog.gz ChangeLog-CVS.gz COPYING LGPL-2.1-or-later NEWS README
|
%doc CREDITS ChangeLog.gz ChangeLog-CVS.gz COPYING NEWS README
|
||||||
%{_bindir}/strace
|
%{_bindir}/strace
|
||||||
%ifarch %{strace32_arches}
|
|
||||||
%{_bindir}/strace32
|
|
||||||
%endif
|
|
||||||
%{_bindir}/strace-log-merge
|
%{_bindir}/strace-log-merge
|
||||||
%{_mandir}/man1/*
|
%{_mandir}/man1/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Tue Oct 29 2024 Eugene Syromiatnikov <esyr@redhat.com> - 5.18-2.1
|
* Thu Jan 02 2025 Eugene Syromiatnikov <esyr@redhat.com> - 6.12-1
|
||||||
|
- Rebase to v6.12; drop upstream patches on top of 6.7, drop the harcoded
|
||||||
|
"-isystem %{_includedir}" from CPPFLAGS (RHEL-8646).
|
||||||
|
|
||||||
|
* Tue Oct 29 2024 Eugene Syromiatnikov <esyr@redhat.com> - 6.7-2
|
||||||
- Fix incorrect syscall name reporting in restart_syscall() on attach when
|
- Fix incorrect syscall name reporting in restart_syscall() on attach when
|
||||||
PTRACE_GET_SYSCALL_INFO is in use (RHEL-8570).
|
PTRACE_GET_SYSCALL_INFO is in use (RHEL-65109).
|
||||||
- Update net-yy-inet*, linkat--secontext_mismatch, and prctl-sve tests.
|
- Update net-yy-inet* and linkat--secontext_mismatch tests.
|
||||||
|
|
||||||
|
* Thu Feb 01 2024 Eugene Syromiatnikov <esyr@redhat.com> - 6.7-1
|
||||||
|
- Rebase to v6.7; drop upstream patches on top of 5.18 (RHEL-8646).
|
||||||
|
- Updated the SPDX license expression.
|
||||||
|
|
||||||
* Mon Jul 11 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.18-2
|
* Mon Jul 11 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.18-2
|
||||||
- Fix the issues reported by covscan (#2103068).
|
- Fix the issues reported by covscan (#2103068).
|
||||||
- Fix SELinux context matching for the deleted paths (#2087693).
|
- Fix SELinux context matching for the deleted paths (#2087693).
|
||||||
- Fix sloppy FD usage in the bpf test (#2103137).
|
- Fix sloppy FD usage in the bpf test (#2103137).
|
||||||
|
- Cater for RHEL 9 license requirement idiosyncrasies (#2103032).
|
||||||
|
|
||||||
* Wed Jun 22 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.18-1
|
* Wed Jun 22 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.18-1
|
||||||
- Rebase to v5.18; drop upstream patches on top of 5.13 (#2084000).
|
- Rebase to v5.18; drop upstream patches on top of 5.13 (#2084002).
|
||||||
|
|
||||||
* Mon Feb 07 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-4
|
* Mon Feb 07 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-7
|
||||||
- Update tests-m32 and tests-mx32 with --secontext=mismatch option support
|
- Update tests-m32 and tests-mx32 with --secontext=mismatch option support
|
||||||
changes (#2046259).
|
changes (#2046264).
|
||||||
|
|
||||||
* Wed Jan 19 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-3
|
* Wed Jan 19 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-6
|
||||||
- Add --secontext=mismatch option support (#2038810).
|
- Add --secontext=mismatch option support (#2038965).
|
||||||
|
|
||||||
* Wed Jan 05 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-2
|
* Wed Jan 05 2022 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-5
|
||||||
- Fix incorrect ifname printing buffer size (#2028158).
|
- Fix incorrect ifname printing buffer size (#2028166).
|
||||||
|
|
||||||
* Wed Oct 20 2021 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-1
|
* Mon Aug 23 2021 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-3
|
||||||
- Rebase to v5.13; drop upstream patches on top of 5.7 (#2015917).
|
- Address some issues reported by covscan (#1996691).
|
||||||
- Address some issues reported by covscan.
|
- Replace 0141-tests-disable-sockopt-timestamp-on-new-glibc-with-__.patch
|
||||||
|
with upstream v5.13-10-g0211fdc "tests: change sockopt-timestamp test
|
||||||
|
to use syscall(__NR_recvmsg)"
|
||||||
|
and 0154-tests-call-setsockopt-directly-in-sockopt-timestamp.patch.
|
||||||
|
- Undo forceful injection of -m64 into CFLAGS/CPPFLAGS to avoid breaking
|
||||||
|
mpers and its tests (#1996676).
|
||||||
|
|
||||||
* Mon Aug 09 2021 Eugene Syromiatnikov <esyr@redhat.com> - 5.7-3
|
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 5.13-2
|
||||||
- Add SELnux context decoding support (#1946500).
|
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||||
|
Related: rhbz#1991688
|
||||||
|
|
||||||
* Mon Nov 09 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.7-2
|
* Tue Jul 20 2021 Eugene Syromiatnikov <esyr@redhat.com> - 5.13-1
|
||||||
- Add PID namespace translation support (#1725113).
|
- Rebase to v5.13 (#1925722, #1925967, #1928305, #1973048).
|
||||||
|
|
||||||
* Mon Nov 09 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.7-1
|
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 5.10-2
|
||||||
- Rebase to v5.7; drop upstream patches on top of 5.1 (#1873229).
|
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||||
|
|
||||||
* Mon Aug 24 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-2
|
* Mon Dec 14 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.10-1
|
||||||
- Update io_uring(2) decoder (#1853011).
|
- v5.9 -> v5.10.
|
||||||
- Fix "Obsoletes:" tag on s390x (#1852960).
|
|
||||||
|
|
||||||
* Thu Jan 30 2020 Eugene Syromiatnikov <esyr@redhat.com> - 5.1-1
|
* Thu Sep 24 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.9-1
|
||||||
- Rebase to strace 5.1 (#1777847).
|
- v5.8 -> v5.9.
|
||||||
|
|
||||||
* Thu Jan 30 2020 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-9
|
* Thu Aug 06 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.8-1
|
||||||
- Fix the "extra tokens at end of #ifdef directive" warning:
|
- v5.7 -> v5.8.
|
||||||
579f2702 "bpf: exclude bit fields from the check".
|
|
||||||
|
|
||||||
* Mon Jan 27 2020 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-8
|
* Mon Jun 01 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.7-1
|
||||||
- Fix expected alignment for IPC tests (#1795251):
|
- v5.6 -> v5.7.
|
||||||
4377e3a1 "tests: fix expected output for some ipc tests", and
|
|
||||||
a75c7c4b "tests: fix -a argument in ipc_msgbuf-Xraw test".
|
|
||||||
- Update tests-m32/looping_threads.test and tests-mx32/looping_threads.test
|
|
||||||
in 0025-tests-check-tracing-of-looping-threads.patch.
|
|
||||||
- Update the bpf syscall decoder:
|
|
||||||
d6c71dd0 "Fix preprocessor indentation",
|
|
||||||
cabd6955 "bpf: print struct bpf_prog_info.gpl_compatible",
|
|
||||||
14a9b6ca "bpf: add support for btf_* fields in BPF_MAP_CREATE",
|
|
||||||
27bd13d3 "bpf: add support for btf_* fields in struct bpf_map_info",
|
|
||||||
d1f90bcd "bpf: add support for *jited_ksyms and *jited_func_lens fields
|
|
||||||
in struct bpf_prog_info", and
|
|
||||||
940fe50f "bpf: add support for new twelve fields in struct bpf_prog_info".
|
|
||||||
c661605b "tests: robustify bpf-obj_get_info_by_fd test against future kernels"
|
|
||||||
|
|
||||||
* Thu Jan 23 2020 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-7
|
* Tue Apr 07 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.6-1
|
||||||
- Fix printing stack traces for early syscalls on process attach (#1790053):
|
- v5.5 -> v5.6.
|
||||||
69b2c33a "unwind-libdw: fix initialization of libdwfl cache" and
|
|
||||||
8e515c74 "tests: add strace-k-p test".
|
|
||||||
- Properly decode struct sockaddr_hci without hci_channel field.
|
|
||||||
- Update tests-m32/ioctl_evdev.c and tests-mx32/ioctl_evdev.c
|
|
||||||
in 0002-evdev-fix-decoding-of-EVIOCGBIT-0.patch.
|
|
||||||
- Update tests-m32/Makefile.in and tests-mx32/Makefile.in
|
|
||||||
in 0032-tests-check-decoding-of-successful-evdev-ioctl.patch.
|
|
||||||
|
|
||||||
* Mon Dec 02 2019 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-6
|
* Thu Feb 06 2020 Dmitry V. Levin <ldv@altlinux.org> - 5.5-1
|
||||||
- Pull upstream fix for ioctl evdev bitset decoding, fix the tests (#1747214).
|
- v5.4 -> v5.5.
|
||||||
- Include commit v4.26~65 "s390x: beautify sthyi data tail prints" (#1747514).
|
|
||||||
- Include upstream patches that fix issues reported by covscan (#1747526):
|
|
||||||
91281fec "v4l2: avoid shifting left a signed number by 31 bit",
|
|
||||||
522ad3a0 "syscall.c: avoid infinite loop in subcalls parsing",
|
|
||||||
9446038e "kvm: avoid bogus vcpu_info assignment in vcpu_register", and
|
|
||||||
2b64854e "xlat: use unsgined type for mount_flags fallback values".
|
|
||||||
|
|
||||||
* Fri Jun 14 2019 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-5
|
* Thu Nov 28 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.4-1
|
||||||
- Use SPDX abbreviations for licenses.
|
- v5.3 -> v5.4.
|
||||||
|
|
||||||
* Wed Jun 12 2019 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-4
|
* Wed Sep 25 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.3-1
|
||||||
- Sync up thread handling unfairness fix with the upstream version.
|
- v5.2 -> v5.3.
|
||||||
- Fix "xlat_idx: Unexpected xlat value 0 at index ..." messages (#1660759).
|
|
||||||
- Remove "ptrace(SYSCALL): No such process" messages (#1662936).
|
|
||||||
- Wire up rseq and kexec_file_load on aarch64 (#1676045).
|
|
||||||
|
|
||||||
* Mon Dec 17 2018 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-3
|
* Fri Jul 12 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.2-1
|
||||||
- Add current version of the thread handling unfairness fix.
|
- v5.1 -> v5.2.
|
||||||
|
|
||||||
* Mon Sep 03 2018 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-2
|
* Wed May 22 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.1-1
|
||||||
- Add transition for strace32 package pn those architectures that
|
- v5.0 -> v5.1.
|
||||||
provided it in RHEL 7 (ppc64 and s390x).
|
|
||||||
|
|
||||||
* Tue Aug 14 2018 Eugene Syromiatnikov <esyr@redhat.com> - 4.24-1
|
* Tue Mar 19 2019 Dmitry V. Levin <ldv@altlinux.org> - 5.0-1
|
||||||
- Rebase to v4.24.
|
- v4.26 -> v5.0 (resolves: #478419, #526740, #851457, #1609318,
|
||||||
|
#1610774, #1662936, #1676045).
|
||||||
|
|
||||||
* Sun Aug 05 2018 Eugene Syromiatnikov <esyr@redhat.com> - 4.23-4
|
* Wed Dec 26 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.26-1
|
||||||
- Fix tests build with fresh glibc that now provides struct statx in sys/stat.h.
|
- v4.25 -> v4.26.
|
||||||
- Resolves #1611749.
|
|
||||||
|
|
||||||
* Thu Jul 19 2018 Eugene Syromiatnikov <esyr@redhat.com> - 4.23-3
|
* Tue Oct 30 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.25-1
|
||||||
- Wire up io_pgetevents and rseq on hppa, microblaze, mips, powerpc, and s390.
|
- v4.24 -> v4.25.
|
||||||
|
|
||||||
* Sat Jun 16 2018 Eugene Syromiatnikov <esyr@redhat.com> - 4.23-2
|
* Tue Aug 14 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.24-1
|
||||||
- Increase test timeout duration.
|
- v4.23 -> v4.24.
|
||||||
|
|
||||||
* Thu Jun 14 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.23-1
|
* Thu Jun 14 2018 Dmitry V. Levin <ldv@altlinux.org> - 4.23-1
|
||||||
- v4.22 -> v4.23.
|
- v4.22 -> v4.23.
|
||||||
|
Loading…
Reference in New Issue
Block a user