summaryrefslogtreecommitdiffstats
path: root/sys/dev/iicbus/ds3231.c
diff options
context:
space:
mode:
authorloos <loos@FreeBSD.org>2015-03-10 14:55:05 +0000
committerloos <loos@FreeBSD.org>2015-03-10 14:55:05 +0000
commitb25767bb39eb9eb8adb02b32ed63dbd1cbab4eee (patch)
treec09668677fbf94f08fc620d045558fca362bf3b9 /sys/dev/iicbus/ds3231.c
parentbf5182c099ced912cffabbc5cd3eccc8e5b39186 (diff)
downloadFreeBSD-src-b25767bb39eb9eb8adb02b32ed63dbd1cbab4eee.zip
FreeBSD-src-b25767bb39eb9eb8adb02b32ed63dbd1cbab4eee.tar.gz
Fix off-by-one bugs.
Spotted by: rpaulo (on another review)
Diffstat (limited to 'sys/dev/iicbus/ds3231.c')
-rw-r--r--sys/dev/iicbus/ds3231.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/dev/iicbus/ds3231.c b/sys/dev/iicbus/ds3231.c
index e6366bf..690c92b 100644
--- a/sys/dev/iicbus/ds3231.c
+++ b/sys/dev/iicbus/ds3231.c
@@ -64,8 +64,6 @@ struct ds3231_softc {
uint8_t sc_status;
};
-static int ds3231_sqw_freq[] = { 1, 1024, 4096, 8192 };
-
static void ds3231_start(void *);
static int
@@ -282,6 +280,7 @@ ds3231_bbsqw_sysctl(SYSCTL_HANDLER_ARGS)
static int
ds3231_sqw_freq_sysctl(SYSCTL_HANDLER_ARGS)
{
+ int ds3231_sqw_freq[] = { 1, 1024, 4096, 8192 };
int error, freq, i, newf, tmp;
struct ds3231_softc *sc;
@@ -290,8 +289,8 @@ ds3231_sqw_freq_sysctl(SYSCTL_HANDLER_ARGS)
if (error != 0)
return (error);
tmp = (sc->sc_ctrl & DS3231_CTRL_RS_MASK) >> DS3231_CTRL_RS_SHIFT;
- if (tmp > nitems(ds3231_sqw_freq))
- tmp = nitems(ds3231_sqw_freq);
+ if (tmp >= nitems(ds3231_sqw_freq))
+ tmp = nitems(ds3231_sqw_freq) - 1;
freq = ds3231_sqw_freq[tmp];
error = sysctl_handle_int(oidp, &freq, 0, req);
if (error != 0 || req->newptr == NULL)
OpenPOWER on IntegriCloud