summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgnezdo <gnezdo@openbsd.org>2021-01-09 20:59:06 +0000
committergnezdo <gnezdo@openbsd.org>2021-01-09 20:59:06 +0000
commite751c8bcffe03db2c4e26163aa2190e881484a7c (patch)
tree343fe00eff8d84a0e8bf8ab3ed9d423ffec74b80
parentEnforce range with sysctl_int_bounded in tcp_sysctl (diff)
downloadwireguard-openbsd-e751c8bcffe03db2c4e26163aa2190e881484a7c.tar.xz
wireguard-openbsd-e751c8bcffe03db2c4e26163aa2190e881484a7c.zip
Enforce range with sysctl_int_bounded in witness_sysctl_watch
Makes previously explicit checking less verbose. OK millert@
-rw-r--r--sys/kern/subr_witness.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/sys/kern/subr_witness.c b/sys/kern/subr_witness.c
index c9810841b0a..05a3079c377 100644
--- a/sys/kern/subr_witness.c
+++ b/sys/kern/subr_witness.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_witness.c,v 1.42 2021/01/09 12:20:37 visa Exp $ */
+/* $OpenBSD: subr_witness.c,v 1.43 2021/01/09 20:59:06 gnezdo Exp $ */
/*-
* Copyright (c) 2008 Isilon Systems, Inc.
@@ -2572,17 +2572,15 @@ witness_sysctl_watch(void *oldp, size_t *oldlenp, void *newp, size_t newlen)
int value;
value = witness_watch;
- error = sysctl_int(oldp, oldlenp, newp, newlen, &value);
+ error = sysctl_int_bounded(oldp, oldlenp, newp, newlen,
+ &value, -1, 3);
if (error == 0 && newp != NULL) {
- if (value >= -1 && value <= 3) {
- mtx_enter(&w_mtx);
- if (value < 0 || witness_watch >= 0)
- witness_watch = value;
- else
- error = EINVAL;
- mtx_leave(&w_mtx);
- } else
+ mtx_enter(&w_mtx);
+ if (value < 0 || witness_watch >= 0)
+ witness_watch = value;
+ else
error = EINVAL;
+ mtx_leave(&w_mtx);
}
return (error);
}