Include error reason if trace disabling fails.

This commit is contained in:
Darren Tucker 2021-10-15 12:43:36 +11:00
parent d4b38144c0
commit fff13aaa26

View File

@ -41,21 +41,24 @@ platform_disable_tracing(int strict)
int disable_trace = PROC_TRACE_CTL_DISABLE;
if (procctl(P_PID, 0, PROC_TRACE_CTL, &disable_trace) && strict)
fatal("unable to make the process untraceable");
fatal("unable to make the process untraceable: %s",
strerror(errno));
#endif
#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE)
/* Disable ptrace on Linux without sgid bit */
if (prctl(PR_SET_DUMPABLE, 0) != 0 && strict)
fatal("unable to make the process undumpable");
fatal("unable to make the process undumpable: %s",
strerror(errno));
#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");
fatal("unable to make the process untraceable: %s",
strerror(errno));
#endif
#ifdef PT_DENY_ATTACH
/* Mac OS X */
if (ptrace(PT_DENY_ATTACH, 0, 0, 0) == -1 && strict)
fatal("unable to set PT_DENY_ATTACH");
fatal("unable to set PT_DENY_ATTACH: %s", strerror(errno));
#endif
}