summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2015-01-15 13:39:06 +0100
committerMark Wielaard <[email protected]>2015-01-16 16:59:46 +0100
commitcc74c21c0de87cc3c7b293234808b3118c4d85db (patch)
tree1f6e3053e2d38a13d1316a9bd8cf14f864658a78
parentddbf23a4594b5a6f1b387b15d42312a203075d80 (diff)
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 <[email protected]> Signed-off-by: Mark Wielaard <[email protected]>
-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 <[email protected]>
+
+ * 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 <[email protected]>
* 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)