diff options
author | loos <loos@FreeBSD.org> | 2015-03-10 14:55:05 +0000 |
---|---|---|
committer | loos <loos@FreeBSD.org> | 2015-03-10 14:55:05 +0000 |
commit | b25767bb39eb9eb8adb02b32ed63dbd1cbab4eee (patch) | |
tree | c09668677fbf94f08fc620d045558fca362bf3b9 /sys/dev/iicbus/ds3231.c | |
parent | bf5182c099ced912cffabbc5cd3eccc8e5b39186 (diff) | |
download | FreeBSD-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.c | 7 |
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) |