import UBI strace-5.18-2.1.el8_10
This commit is contained in:
parent
63ee62a810
commit
f79ea5d554
@ -0,0 +1,102 @@
|
|||||||
|
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
|
||||||
|
|
37
SOURCES/0184-startup_tcb-add-a-comment.patch
Normal file
37
SOURCES/0184-startup_tcb-add-a-comment.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
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
|
||||||
|
|
@ -0,0 +1,129 @@
|
|||||||
|
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 \
|
108
SOURCES/0186-tests-workaround-net-yy-inet-for-new-kernels.patch
Normal file
108
SOURCES/0186-tests-workaround-net-yy-inet-for-new-kernels.patch
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
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
|
||||||
|
|
@ -0,0 +1,530 @@
|
|||||||
|
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
|
||||||
|
|
@ -0,0 +1,76 @@
|
|||||||
|
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
|
||||||
|
|
89
SOURCES/0191-prctl-improve-PR_SVE_-SG-ET_VL-decoding.patch
Normal file
89
SOURCES/0191-prctl-improve-PR_SVE_-SG-ET_VL-decoding.patch
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
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
|
||||||
|
|
@ -0,0 +1,130 @@
|
|||||||
|
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,7 +1,7 @@
|
|||||||
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: 5.18
|
||||||
Release: 2%{?dist}
|
Release: 2.1%{?dist}
|
||||||
# The test suite is GPLv2+, all the rest is LGPLv2.1+.
|
# The test suite is GPLv2+, all the rest is LGPLv2.1+.
|
||||||
License: LGPL-2.1+ and GPL-2.0+
|
License: LGPL-2.1+ and GPL-2.0+
|
||||||
Group: Development/Debuggers
|
Group: Development/Debuggers
|
||||||
@ -280,6 +280,33 @@ Patch181: 0181-secontext-fix-expected-SELinux-context-check-for-unl.patch
|
|||||||
# 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
|
||||||
|
# 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
|
||||||
|
# v6.11-22-g2048c136b "startup_tcb: add a comment"
|
||||||
|
Patch184: 0184-startup_tcb-add-a-comment.patch
|
||||||
|
# v6.11-23-g3bf08cbb3 "tests: add another test of restart_syscall decoding"
|
||||||
|
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."
|
||||||
|
# v6.9~27 "tests: workaround net-yy-inet* for new kernels"
|
||||||
|
Patch186: 0186-tests-workaround-net-yy-inet-for-new-kernels.patch
|
||||||
|
## Update linkat--secontext_mismatch test to fix the failures reported by QE
|
||||||
|
# v6.11~4 "tests: avoid linkat--secontext_mismatch failures on setfilecon errors"
|
||||||
|
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"
|
||||||
|
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"
|
||||||
|
#Patch189: 0189-tests-move-k_setsockopt-definition-into-a-separate-f.patch
|
||||||
|
## "tests/sockopt-timestamp.c: use k_getsockopt and k_setsockopt"
|
||||||
|
#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
|
### Wire up rseq and kexec_file_load in order to avoid kexec_file_load
|
||||||
### test failure on aarch64. Addresses https://bugzilla.redhat.com/1676045
|
### test failure on aarch64. Addresses https://bugzilla.redhat.com/1676045
|
||||||
### ("strace: FTBFS in Fedora rawhide/f30").
|
### ("strace: FTBFS in Fedora rawhide/f30").
|
||||||
@ -448,6 +475,18 @@ received by a process.
|
|||||||
%patch181 -p1
|
%patch181 -p1
|
||||||
%patch182 -p1
|
%patch182 -p1
|
||||||
|
|
||||||
|
%patch183 -p1
|
||||||
|
%patch184 -p1
|
||||||
|
%patch185 -p1
|
||||||
|
|
||||||
|
%patch186 -p1
|
||||||
|
%patch187 -p1
|
||||||
|
%patch188 -p1
|
||||||
|
#%patch189 -p1
|
||||||
|
#%patch190 -p1
|
||||||
|
%patch191 -p1
|
||||||
|
%patch192 -p1
|
||||||
|
|
||||||
#%patch1000 -p1
|
#%patch1000 -p1
|
||||||
#%patch1001 -p1
|
#%patch1001 -p1
|
||||||
|
|
||||||
@ -533,6 +572,11 @@ echo 'END OF TEST SUITE INFORMATION'
|
|||||||
%{_mandir}/man1/*
|
%{_mandir}/man1/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 29 2024 Eugene Syromiatnikov <esyr@redhat.com> - 5.18-2.1
|
||||||
|
- Fix incorrect syscall name reporting in restart_syscall() on attach when
|
||||||
|
PTRACE_GET_SYSCALL_INFO is in use (RHEL-8570).
|
||||||
|
- Update net-yy-inet*, linkat--secontext_mismatch, and prctl-sve tests.
|
||||||
|
|
||||||
* 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).
|
||||||
|
Loading…
Reference in New Issue
Block a user