Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Sep 2020 21:14:36 +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: r365279 - head/sbin/init
Message-ID:  <202009022114.082LEaWb017564@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brooks
Date: Wed Sep  2 21:14:36 2020
New Revision: 365279
URL: https://svnweb.freebsd.org/changeset/base/365279

Log:
  Remove risky compatability with old kernels
  
  The badsys() handler for SIGSYS was added as a transtion aid for kernels
  lacking sysctl() in 1993.  It is unsafe and unsound so remove it rather
  than running the risk of a privilege-dropping system call being silently
  omitted.
  
  This partially reverts SCCSID 6.12 (Berkeley) 03/03/93 "add code to
  change the system security level".
  
  Reviewed by:	mckusick, imp, kevans
  Obtained from:	CheriBSD
  MFC after:	1 week
  Sponsored by:	DARPA
  Differential Revision:	https://reviews.freebsd.org/D26289

Modified:
  head/sbin/init/init.c

Modified: head/sbin/init/init.c
==============================================================================
--- head/sbin/init/init.c	Wed Sep  2 20:43:08 2020	(r365278)
+++ head/sbin/init/init.c	Wed Sep  2 21:14:36 2020	(r365279)
@@ -106,7 +106,6 @@ static void stall(const char *, ...) __printflike(1, 2
 static void warning(const char *, ...) __printflike(1, 2);
 static void emergency(const char *, ...) __printflike(1, 2);
 static void disaster(int);
-static void badsys(int);
 static void revoke_ttys(void);
 static int  runshutdown(void);
 static char *strk(char *);
@@ -307,9 +306,8 @@ invalid:
 	 * We catch or block signals rather than ignore them,
 	 * so that they get reset on exec.
 	 */
-	handle(badsys, SIGSYS, 0);
-	handle(disaster, SIGABRT, SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGXCPU,
-	    SIGXFSZ, 0);
+	handle(disaster, SIGABRT, SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGSYS,
+	    SIGXCPU, SIGXFSZ, 0);
 	handle(transition_handler, SIGHUP, SIGINT, SIGEMT, SIGTERM, SIGTSTP,
 	    SIGUSR1, SIGUSR2, SIGWINCH, 0);
 	handle(alrm_handler, SIGALRM, 0);
@@ -504,22 +502,6 @@ emergency(const char *message, ...)
 
 	vsyslog(LOG_EMERG, message, ap);
 	va_end(ap);
-}
-
-/*
- * Catch a SIGSYS signal.
- *
- * These may arise if a system does not support sysctl.
- * We tolerate up to 25 of these, then throw in the towel.
- */
-static void
-badsys(int sig)
-{
-	static int badcount = 0;
-
-	if (badcount++ < 25)
-		return;
-	disaster(sig);
 }
 
 /*



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