summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2015-01-15 13:39:06 +0100
committerMark Wielaard <mjw@redhat.com>2015-01-16 16:59:46 +0100
commitcc74c21c0de87cc3c7b293234808b3118c4d85db (patch)
tree1f6e3053e2d38a13d1316a9bd8cf14f864658a78 /tests
parentddbf23a4594b5a6f1b387b15d42312a203075d80 (diff)
downloadelfutils-cc74c21c0de87cc3c7b293234808b3118c4d85db.tar.gz
tests: Make deleted and vdsosyms testcases work with "restricted ptrace".
Some systems might have "restricted ptrace" that doesn't allow process inspection of arbitrary processes. Change the deleted testcase to explicitly allow any other process to inspect it using the PR_SET_PTRACER prctl set to PR_SET_PTRACER_ANY. Change the vdsosyms testcase to inspect the process itself which should always be allowed. Reported-by: Anatol Pomozov <anatol.pomozov@gmail.com> Signed-off-by: Mark Wielaard <mjw@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog5
-rw-r--r--tests/deleted.c6
-rw-r--r--tests/vdsosyms.c5
3 files changed, 14 insertions, 2 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index b81e83c1..87a7ce76 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-15 Mark Wielaard <mjw@redhat.com>
+
+ * deleted.c (main): Call prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY).
+ * vdsosyms.c (main): Use getpid () instead of getppid ().
+
2014-12-27 Mark Wielaard <mjw@redhat.com>
* addrscopes.c (handle_address): Last address in scope is highpc - 1.
diff --git a/tests/deleted.c b/tests/deleted.c
index 32a310b6..d071bf79 100644
--- a/tests/deleted.c
+++ b/tests/deleted.c
@@ -23,6 +23,7 @@
#include <stdio.h>
#include <error.h>
#include <errno.h>
+#include <sys/prctl.h>
extern void libfunc (void);
@@ -42,6 +43,11 @@ main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
assert (!err);
err = close (2);
assert (!err);
+ /* Make sure eu-stack -p works on this process even with
+ "restricted ptrace". */
+#ifdef PR_SET_PTRACER_ANY
+ prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
+#endif
libfunc ();
abort ();
}
diff --git a/tests/vdsosyms.c b/tests/vdsosyms.c
index c1f8d89f..4f12b9a6 100644
--- a/tests/vdsosyms.c
+++ b/tests/vdsosyms.c
@@ -80,8 +80,9 @@ main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
if (dwfl == NULL)
error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
- /* Take our parent as "arbitrary" process to inspect. */
- pid_t pid = getppid();
+ /* Take ourself as "arbitrary" process to inspect. This should work
+ even with "restricted ptrace". */
+ pid_t pid = getpid();
int result = dwfl_linux_proc_report (dwfl, pid);
if (result < 0)