svn commit: r279852 - head/sys/dev/iicbus

Luiz Otavio O Souza loos at FreeBSD.org
Tue Mar 10 14:55:07 UTC 2015


Author: loos
Date: Tue Mar 10 14:55:05 2015
New Revision: 279852
URL: https://svnweb.freebsd.org/changeset/base/279852

Log:
  Fix off-by-one bugs.
  
  Spotted by:	rpaulo (on another review)

Modified:
  head/sys/dev/iicbus/ds3231.c
  head/sys/dev/iicbus/lm75.c

Modified: head/sys/dev/iicbus/ds3231.c
==============================================================================
--- head/sys/dev/iicbus/ds3231.c	Tue Mar 10 14:43:07 2015	(r279851)
+++ head/sys/dev/iicbus/ds3231.c	Tue Mar 10 14:55:05 2015	(r279852)
@@ -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_AR
 	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)

Modified: head/sys/dev/iicbus/lm75.c
==============================================================================
--- head/sys/dev/iicbus/lm75.c	Tue Mar 10 14:43:07 2015	(r279851)
+++ head/sys/dev/iicbus/lm75.c	Tue Mar 10 14:55:05 2015	(r279852)
@@ -90,8 +90,6 @@ struct lm75_softc {
 	uint32_t		sc_conf;
 };
 
-static int lm75_faults[4] = { 1, 2, 4, 6 };
-
 /* Utility functions */
 static int  lm75_conf_read(struct lm75_softc *);
 static int  lm75_conf_write(struct lm75_softc *);
@@ -457,14 +455,15 @@ static int
 lm75_faults_sysctl(SYSCTL_HANDLER_ARGS)
 {
 	device_t dev;
+	int lm75_faults[] = { 1, 2, 4, 6 };
 	int error, faults, i, newf, tmp;
 	struct lm75_softc *sc;
 
 	dev = (device_t)arg1;
 	sc = device_get_softc(dev);
 	tmp = (sc->sc_conf & LM75_CONF_FAULT) >> LM75_CONF_FSHIFT;
-	if (tmp > nitems(lm75_faults))
-		tmp = nitems(lm75_faults);
+	if (tmp >= nitems(lm75_faults))
+		tmp = nitems(lm75_faults) - 1;
 	faults = lm75_faults[tmp];
 
 	error = sysctl_handle_int(oidp, &faults, 0, req);


More information about the svn-src-head mailing list