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;