[openssh-commits] [openssh] 01/02: Fix tracing disable on FreeBSD.
git+noreply at mindrot.org
git+noreply at mindrot.org
Mon Nov 7 11:02:16 AEDT 2022
This is an automated email from the git hooks/post-receive script.
dtucker pushed a commit to branch master
in repository openssh.
commit 0f7e1eba55259ec037f515000b4c4afbf446230a
Author: Darren Tucker <dtucker at dtucker.net>
Date: Sun Nov 6 10:50:01 2022 +1100
Fix tracing disable on FreeBSD.
Some versions of FreeBSD do not support using id 0 to refer to the
current pid for procctl, so pass getpid() explicitly. From
emaste at freebsd.org.
---
platform-tracing.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/platform-tracing.c b/platform-tracing.c
index c2810f2d..80488bf7 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"
@@ -42,7 +43,16 @@ platform_disable_tracing(int strict)
/* On FreeBSD, we should make this process untraceable */
int disable_trace = PROC_TRACE_CTL_DISABLE;
- if (procctl(P_PID, 0, PROC_TRACE_CTL, &disable_trace) && strict)
+ /*
+ * 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.
+ */
+ if (procctl(P_PID, 0, PROC_TRACE_CTL, &disable_trace) == 0)
+ return;
+ if (procctl(P_PID, getpid(), PROC_TRACE_CTL, &disable_trace) == 0)
+ return;
+ if (strict)
fatal("unable to make the process untraceable: %s",
strerror(errno));
#endif
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list