Module Name:    src
Committed By:   mrg
Date:           Sun Apr 11 01:50:25 UTC 2010

Modified Files:
        src/sys/kern: kern_sysctl.c

Log Message:
reject attempts to write CTLTYPE_BOOL nodes with a value other than 0 or 1.


To generate a diff of this commit:
cvs rdiff -u -r1.228 -r1.229 src/sys/kern/kern_sysctl.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_sysctl.c
diff -u src/sys/kern/kern_sysctl.c:1.228 src/sys/kern/kern_sysctl.c:1.229
--- src/sys/kern/kern_sysctl.c:1.228	Wed Jan 13 01:53:38 2010
+++ src/sys/kern/kern_sysctl.c	Sun Apr 11 01:50:25 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_sysctl.c,v 1.228 2010/01/13 01:53:38 pooka Exp $	*/
+/*	$NetBSD: kern_sysctl.c,v 1.229 2010/04/11 01:50:25 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2003, 2007, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_sysctl.c,v 1.228 2010/01/13 01:53:38 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_sysctl.c,v 1.229 2010/04/11 01:50:25 mrg Exp $");
 
 #include "opt_defcorename.h"
 #include "ksyms.h"
@@ -1522,7 +1522,7 @@
 	sz = rnode->sysctl_size;
 	switch (SYSCTL_TYPE(rnode->sysctl_flags)) {
 	case CTLTYPE_BOOL: {
-		u_char tmp;
+		bool tmp;
 		/*
 		 * these data must be *exactly* the same size coming
 		 * in.  bool may only be true or false.
@@ -1530,6 +1530,8 @@
 		if (newlen != sz)
 			return (EINVAL);
 		error = sysctl_copyin(l, newp, &tmp, sz);
+		if (tmp != true && tmp != false)
+			return EINVAL;
 		if (error)
 			break;
 		*(bool *)d = tmp;

Reply via email to