diff options
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | platform.c | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 66387038..83548767 100644 --- a/configure.ac +++ b/configure.ac @@ -898,6 +898,7 @@ mips-sony-bsd|mips-sony-newsos4) else AC_MSG_RESULT([no]) fi + AC_CHECK_FUNCS([setpflags]) AC_CHECK_FUNCS([setppriv]) AC_CHECK_FUNCS([priv_basicset]) AC_CHECK_HEADERS([priv.h]) @@ -22,6 +22,9 @@ #if defined(HAVE_SYS_PRCTL_H) #include <sys/prctl.h> /* For prctl() and PR_SET_DUMPABLE */ #endif +#ifdef HAVE_PRIV_H +#include <priv.h> /* For setpflags() and __PROC_PROTECT */ +#endif #include <stdarg.h> #include <unistd.h> @@ -229,4 +232,9 @@ platform_disable_tracing(int strict) if (prctl(PR_SET_DUMPABLE, 0) != 0 && strict) fatal("unable to make the process undumpable"); #endif +#if defined(HAVE_SETPFLAGS) && defined(__PROC_PROTECT) + /* On Solaris, we should make this process untraceable */ + if (setpflags(__PROC_PROTECT, 1) != 0 && strict) + fatal("unable to make the process untraceable"); +#endif } |