aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches/elfutils-tests-ptrace.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/elfutils-tests-ptrace.patch')
-rw-r--r--gnu/packages/patches/elfutils-tests-ptrace.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch
new file mode 100644
index 0000000000..cd46999063
--- /dev/null
+++ b/gnu/packages/patches/elfutils-tests-ptrace.patch
@@ -0,0 +1,64 @@
+This patch allows us to skip tests that require PTRACE_ATTACH in situations
+where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for
+root, by default.)
+
+Reported at <https://bugzilla.redhat.com/show_bug.cgi?id=1210966>.
+
+--- elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:38:33.028556235 +0200
++++ elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:46:15.012442185 +0200
+@@ -17,6 +17,15 @@
+
+ . $srcdir/backtrace-subr.sh
+
++# Check whether the Yama policy allows us to use PTRACE_ATTACH.
++if [ -f /proc/sys/kernel/yama/ptrace_scope ]
++then
++ if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ]
++ then
++ exit 77
++ fi
++fi
++
+ tempfiles deleted deleted-lib.so
+ cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
+
+--- elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:40:20.633461110 +0200
++++ elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:45:06.611866677 +0200
+@@ -23,6 +23,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ #include <unistd.h>
+ #include ELFUTILS_HEADER(dwfl)
+
+@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void
+ int
+ main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
+ {
++ static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope";
+ static char *debuginfo_path;
+ static const Dwfl_Callbacks proc_callbacks =
+ {
+@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)),
+
+ .find_elf = dwfl_linux_proc_find_elf,
+ };
++
++ /* Check whether the Yama policy allows us to use PTRACE_ATTACH. */
++ int ptrace_scope = open (ptrace_scope_file, O_RDONLY);
++ if (ptrace_scope >= 0)
++ {
++ char buf[10];
++ int count = read (ptrace_scope, buf, sizeof buf);
++ assert (count > 0);
++ if (buf[0] != '0')
++ /* We're not allowed, so skip this test. */
++ return 77;
++ close (ptrace_scope);
++ }
++
+ Dwfl *dwfl = dwfl_begin (&proc_callbacks);
+ if (dwfl == NULL)
+ error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));