svn commit: r352585 - head/sys/kern

Konstantin Belousov kib at FreeBSD.org
Sat Sep 21 20:03:18 UTC 2019


Author: kib
Date: Sat Sep 21 20:03:17 2019
New Revision: 352585
URL: https://svnweb.freebsd.org/changeset/base/352585

Log:
  kern.elf{32,64}.pie_base sysctl: enforce page alignment.
  
  Requested by:	rstone
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/kern/imgact_elf.c

Modified: head/sys/kern/imgact_elf.c
==============================================================================
--- head/sys/kern/imgact_elf.c	Sat Sep 21 19:51:57 2019	(r352584)
+++ head/sys/kern/imgact_elf.c	Sat Sep 21 20:03:17 2019	(r352585)
@@ -136,8 +136,24 @@ SYSCTL_INT(_kern_elf32, OID_AUTO, read_exec, CTLFLAG_R
 #endif
 
 static u_long __elfN(pie_base) = ET_DYN_LOAD_ADDR;
-SYSCTL_ULONG(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, pie_base,
-    CTLFLAG_RWTUN, &__elfN(pie_base), 0,
+static int
+sysctl_pie_base(SYSCTL_HANDLER_ARGS)
+{
+	u_long val;
+	int error;
+
+	val = __elfN(pie_base);
+	error = sysctl_handle_long(oidp, &val, 0, req);
+	if (error != 0 || req->newptr == NULL)
+		return (error);
+	if ((val & PAGE_MASK) != 0)
+		return (EINVAL);
+	__elfN(pie_base) = val;
+	return (0);
+}
+SYSCTL_PROC(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, pie_base,
+    CTLTYPE_ULONG | CTLFLAG_MPSAFE | CTLFLAG_RW, NULL, 0,
+    sysctl_pie_base, "LU",
     "PIE load base without randomization");
 
 SYSCTL_NODE(__CONCAT(_kern_elf, __ELF_WORD_SIZE), OID_AUTO, aslr, CTLFLAG_RW, 0,


More information about the svn-src-head mailing list