Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Mar 2015 14:55:06 +0000 (UTC)
From:      Luiz Otavio O Souza <loos@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r279852 - head/sys/dev/iicbus
Message-ID:  <201503101455.t2AEt633064398@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503101455.t2AEt633064398>