Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Apr 2020 20:28:20 +0000 (UTC)
From:      Brooks Davis <brooks@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r359991 - head/lib/libc/gen
Message-ID:  <202004152028.03FKSKhp095844@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brooks
Date: Wed Apr 15 20:28:20 2020
New Revision: 359991
URL: https://svnweb.freebsd.org/changeset/base/359991

Log:
  Attempt to use AT_PS_STRINGS to get the ps_strings pointer.
  
  This saves a system call and avoids one of the (relatively rare) cases
  of the kernel exporting pointers via sysctl.
  
  As a temporary measure, keep the sysctl support to allow limited
  compatability with old kernels.
  
  Fail gracefully if ps_strings can't be found (should never happen).
  
  Reviewed by:	kib
  Obtained from:	CheriBSD
  Sponsored by:	DARPA
  Differential Revision:	https://reviews.freebsd.org/D24407

Modified:
  head/lib/libc/gen/setproctitle.c

Modified: head/lib/libc/gen/setproctitle.c
==============================================================================
--- head/lib/libc/gen/setproctitle.c	Wed Apr 15 20:26:41 2020	(r359990)
+++ head/lib/libc/gen/setproctitle.c	Wed Apr 15 20:28:20 2020	(r359991)
@@ -20,6 +20,7 @@ __FBSDID("$FreeBSD$");
 
 #include "namespace.h"
 #include <sys/param.h>
+#include <sys/elf_common.h>
 #include <sys/exec.h>
 #include <sys/sysctl.h>
 
@@ -112,6 +113,10 @@ setproctitle_internal(const char *fmt, va_list ap)
 		/* Nothing to restore */
 		return (NULL);
 
+	if (ps_strings == NULL)
+		(void)_elf_aux_info(AT_PS_STRINGS, &ps_strings,
+		    sizeof(ps_strings));
+
 	if (ps_strings == NULL) {
 		len = sizeof(ul_ps_strings);
 		if (sysctlbyname("kern.ps_strings", &ul_ps_strings, &len, NULL,
@@ -119,6 +124,9 @@ setproctitle_internal(const char *fmt, va_list ap)
 			return (NULL);
 		ps_strings = (struct ps_strings *)ul_ps_strings;
 	}
+
+	if (ps_strings == NULL)
+		return (NULL);
 
 	/*
 	 * PS_STRINGS points to zeroed memory on a style #2 kernel.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202004152028.03FKSKhp095844>