Ed Maste
2022-Nov-06 21:25 UTC
Disable tracing on FreeBSD using procctl. (OpenSSH Portable 8.8)
On Sun, 6 Nov 2022 at 15:14, Darren Tucker <dtucker at dtucker.net> wrote:> > I had something similar but a bit more compact and commented. Does this > also work? > > diff --git a/platform-tracing.c b/platform-tracing.c > index c2810f2d..a8ce078b 100644 > --- a/platform-tracing.c > +++ b/platform-tracing.c > @@ -32,6 +32,7 @@ > #include <stdarg.h> > #include <stdio.h> > #include <string.h> > +#include <unistd.h> > > #include "log.h" > > @@ -39,10 +40,16 @@ void > platform_disable_tracing(int strict) > { > #if defined(HAVE_PROCCTL) && defined(PROC_TRACE_CTL) > - /* On FreeBSD, we should make this process untraceable */ > + /* > + * On FreeBSD, we should make this process untraceable. > + * pid=0 means "this process" and but some older kernels do not > + * understand that, so retry with our own pid before failing. > + */ > int disable_trace = PROC_TRACE_CTL_DISABLE; > > - if (procctl(P_PID, 0, PROC_TRACE_CTL, &disable_trace) && strict) > + if (procctl(P_PID, 0, PROC_TRACE_CTL, &disable_trace) == -1 && > + procctl(P_PID, getpid(), PROC_TRACE_CTL, &disable_trace) == -1 && > + strict) > fatal("unable to make the process untraceable: %s", > strerror(errno)); > #endifLooks good to me, even if I think the multi-stage short-circuit is a little less clear.
Darren Tucker
2022-Nov-06 22:13 UTC
Disable tracing on FreeBSD using procctl. (OpenSSH Portable 8.8)
On Sun, Nov 06, 2022 at 04:25:43PM -0500, Ed Maste wrote: [...]> Looks good to me, even if I think the multi-stage short-circuit is a > little less clear.It reads ok to me but I don't feel strongly either way. In your diff, you check for it returning 0, however I note that the procctl(2) man page does not specify what is returned on success in the RETURN VALUES section (nor in the PROC_TRACE_CTL section or any other place I can see): """ RETURN VALUES If an error occurs, a value of -1 is returned and errno is set to indicate the error. """ -- Darren Tucker (dtucker at dtucker.net) GPG key 11EAA6FA / A86E 3E07 5B19 5880 E860 37F4 9357 ECEF 11EA A6FA (new) Good judgement comes with experience. Unfortunately, the experience usually comes from bad judgement.