diff options
author | jhibbits <jhibbits@FreeBSD.org> | 2014-10-12 23:48:55 +0000 |
---|---|---|
committer | jhibbits <jhibbits@FreeBSD.org> | 2014-10-12 23:48:55 +0000 |
commit | f64b57408f7bde95a933729a7c464975dac9a63c (patch) | |
tree | 575941092774621ea8ad393ce7835f1ddc4c66d7 | |
parent | 1cc1341f99e4db303ca09d810d015e413a249d2b (diff) | |
download | FreeBSD-src-f64b57408f7bde95a933729a7c464975dac9a63c.zip FreeBSD-src-f64b57408f7bde95a933729a7c464975dac9a63c.tar.gz |
Check error return from reading integer part of temperature.
There's a very remote, but possible, chance that the integer part read will
fail, but the fraction read succeeds, at which point the reported temperature is
invalid.
Reported by: Matthew Rezny
MFC after: 3 weeks
-rw-r--r-- | sys/dev/iicbus/max6690.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/iicbus/max6690.c b/sys/dev/iicbus/max6690.c index 5742e17..67bb042 100644 --- a/sys/dev/iicbus/max6690.c +++ b/sys/dev/iicbus/max6690.c @@ -340,6 +340,10 @@ max6690_sensor_read(struct max6690_sensor *sens) } err = max6690_read(sc->sc_dev, sc->sc_addr, reg_int, &integer); + + if (err < 0) + return (-1); + err = max6690_read(sc->sc_dev, sc->sc_addr, reg_ext, &fraction); if (err < 0) |