aboutsummaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2016-02-14 17:29:49 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2016-02-14 17:29:49 +0100
commitce07550c57172443c10a66957b50085e273d20b3 (patch)
tree8d0719a1fcf36fc7d25c20d5359f104f2f49b107 /apps
parent8ded9e3d0bbc2d7cdc5b9f01b4fed9c8685caf82 (diff)
downloadble-toys-ce07550c57172443c10a66957b50085e273d20b3.tar.gz
ble-toys-ce07550c57172443c10a66957b50085e273d20b3.tar.bz2
ble-toys-ce07550c57172443c10a66957b50085e273d20b3.tar.xz
ble-toys-ce07550c57172443c10a66957b50085e273d20b3.zip
o Fixing off-by-one error when reading device name.
Diffstat (limited to 'apps')
-rw-r--r--apps/SoilMoisture.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/apps/SoilMoisture.cpp b/apps/SoilMoisture.cpp
index 88f881a..13578f6 100644
--- a/apps/SoilMoisture.cpp
+++ b/apps/SoilMoisture.cpp
@@ -130,7 +130,11 @@ string SoilMoisture::getName(uint8_t sensor) {
uint8_t bytes[bytesLeft];
buffer.copy(bytes, bytesLeft);
- return string((char *) bytes, (unsigned long) bytesLeft);
+ if (bytesLeft == 0 || bytesLeft < (bytes[0] + 1)) {
+ throw runtime_error("Bad response from device. buffer size: " + to_string(bytesLeft) + ", buffer[0]=" + to_string((int)bytes[0]));
+ }
+
+ return string((const char *)&bytes[1], bytes[0]);
}
bool SoilMoisture::hasTemperatureSensor() {