Module Name:    src
Committed By:   snj
Date:           Mon Jan  1 18:58:32 UTC 2018

Modified Files:
        src/sys/kern [netbsd-8]: kern_proc.c

Log Message:
Pull up following revision(s) (requested by maxv in ticket #465):
        sys/kern/kern_proc.c: revision 1.209
If no auxv is present, don't kmem_alloc(0). Easy to panic the kernel by
typing 'cat /proc/aout_pid/auxv' on whatever a.out binary you're running.
Fortunately, amd64 does not enable EXEC_AOUT by default. Unfortunately,
i386 does enable it by default.


To generate a diff of this commit:
cvs rdiff -u -r1.206 -r1.206.6.1 src/sys/kern/kern_proc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_proc.c
diff -u src/sys/kern/kern_proc.c:1.206 src/sys/kern/kern_proc.c:1.206.6.1
--- src/sys/kern/kern_proc.c:1.206	Thu Mar 30 20:17:11 2017
+++ src/sys/kern/kern_proc.c	Mon Jan  1 18:58:32 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_proc.c,v 1.206 2017/03/30 20:17:11 christos Exp $	*/
+/*	$NetBSD: kern_proc.c,v 1.206.6.1 2018/01/01 18:58:32 snj Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.206 2017/03/30 20:17:11 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.206.6.1 2018/01/01 18:58:32 snj Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_kstack.h"
@@ -2477,16 +2477,19 @@ proc_getauxv(struct proc *p, void **buf,
 	struct ps_strings pss;
 	int error;
 	void *uauxv, *kauxv;
+	size_t size;
 
 	if ((error = copyin_psstrings(p, &pss)) != 0)
 		return error;
-
 	if (pss.ps_envstr == NULL)
 		return EIO;
 
+	size = p->p_execsw->es_arglen;
+	if (size == 0)
+		return EIO;
+
 	size_t ptrsz = PROC_PTRSZ(p);
 	uauxv = (void *)((char *)pss.ps_envstr + (pss.ps_nenvstr + 1) * ptrsz);
-	size_t size = p->p_execsw->es_arglen;
 
 	kauxv = kmem_alloc(size, KM_SLEEP);
 

Reply via email to