[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