Need more truth-checks

Signed-off-by: Sara Damiano <sdamiano@stroudcenter.org>
This commit is contained in:
Sara Damiano
2020-02-18 22:20:07 -05:00
parent 089077fdb7
commit 62516d26a3
9 changed files with 22 additions and 18 deletions

View File

@@ -519,7 +519,7 @@ class TinyGsmMC60 : public TinyGsmModem<TinyGsmMC60>,
index = 6; index = 6;
goto finish; goto finish;
} else if (data.endsWith( } else if (data.endsWith(
GF(GSM_NL "+QIRD:"))) { // TODO(?): QIRD? or QIRDI? GF(GSM_NL "+QIRDI:"))) { // TODO(?): QIRD? or QIRDI?
// +QIRDI: <id>,<sc>,<sid>,<num>,<len>,< tlen> // +QIRDI: <id>,<sc>,<sid>,<num>,<len>,< tlen>
streamSkipUntil(','); // Skip the context streamSkipUntil(','); // Skip the context
streamSkipUntil(','); // Skip the role streamSkipUntil(','); // Skip the role
@@ -529,7 +529,8 @@ class TinyGsmMC60 : public TinyGsmModem<TinyGsmMC60>,
int8_t num_packets = streamGetIntBefore(','); int8_t num_packets = streamGetIntBefore(',');
// read the length of the current packet // read the length of the current packet
int16_t len_packet = streamGetIntBefore('\n'); int16_t len_packet = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) { if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux] &&
num_packets >= 0 && len_packet >= 0) {
sockets[mux]->sock_available = len_packet * num_packets; sockets[mux]->sock_available = len_packet * num_packets;
} }
data = ""; data = "";

View File

@@ -646,7 +646,7 @@ class TinyGsmSim5360 : public TinyGsmModem<TinyGsmSim5360>,
int16_t len = streamGetIntBefore('\n'); int16_t len = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) { if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
sockets[mux]->got_data = true; sockets[mux]->got_data = true;
sockets[mux]->sock_available = len; if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
} }
data = ""; data = "";
// DBG("### Got Data:", len, "on", mux); // DBG("### Got Data:", len, "on", mux);

View File

@@ -677,7 +677,7 @@ class TinyGsmSim7000 : public TinyGsmModem<TinyGsmSim7000>,
int16_t len = streamGetIntBefore('\n'); int16_t len = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) { if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
sockets[mux]->got_data = true; sockets[mux]->got_data = true;
sockets[mux]->sock_available = len; if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
} }
data = ""; data = "";
// DBG("### Got Data:", len, "on", mux); // DBG("### Got Data:", len, "on", mux);

View File

@@ -736,7 +736,7 @@ class TinyGsmSim7600 : public TinyGsmModem<TinyGsmSim7600>,
int16_t len = streamGetIntBefore('\n'); int16_t len = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) { if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
sockets[mux]->got_data = true; sockets[mux]->got_data = true;
sockets[mux]->sock_available = len; if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
} }
data = ""; data = "";
// DBG("### Got Data:", len, "on", mux); // DBG("### Got Data:", len, "on", mux);

View File

@@ -652,7 +652,7 @@ class TinyGsmSim800 : public TinyGsmModem<TinyGsmSim800>,
int16_t len = streamGetIntBefore('\n'); int16_t len = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) { if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
sockets[mux]->got_data = true; sockets[mux]->got_data = true;
sockets[mux]->sock_available = len; if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
} }
data = ""; data = "";
// DBG("### Got Data:", len, "on", mux); // DBG("### Got Data:", len, "on", mux);

View File

@@ -828,7 +828,8 @@ class TinyGsmSaraR4 : public TinyGsmModem<TinyGsmSaraR4>,
int16_t len = streamGetIntBefore('\n'); int16_t len = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) { if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
sockets[mux]->got_data = true; sockets[mux]->got_data = true;
sockets[mux]->sock_available = len; // max size is 1024
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
} }
data = ""; data = "";
DBG("### URC Data Received:", len, "on", mux); DBG("### URC Data Received:", len, "on", mux);

View File

@@ -760,7 +760,8 @@ class TinyGsmUBLOX : public TinyGsmModem<TinyGsmUBLOX>,
int16_t len = streamGetIntBefore('\n'); int16_t len = streamGetIntBefore('\n');
if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) { if (mux >= 0 && mux < TINY_GSM_MUX_COUNT && sockets[mux]) {
sockets[mux]->got_data = true; sockets[mux]->got_data = true;
sockets[mux]->sock_available = len; // max size is 1024
if (len >= 0 && len <= 1024) { sockets[mux]->sock_available = len; }
} }
data = ""; data = "";
DBG("### URC Data Received:", len, "on", mux); DBG("### URC Data Received:", len, "on", mux);

View File

@@ -268,10 +268,11 @@ class TinyGsmModem {
} }
inline int16_t streamGetIntBefore(char lastChar) { inline int16_t streamGetIntBefore(char lastChar) {
char buf[6]; char buf[7];
size_t bytesRead = thisModem().stream.readBytesUntil( size_t bytesRead = thisModem().stream.readBytesUntil(
lastChar, buf, static_cast<size_t>(6)); lastChar, buf, static_cast<size_t>(7));
if (bytesRead) { // if we read 7 or more bytes, it's an overflow
if (bytesRead && bytesRead < 7) {
buf[bytesRead] = '\0'; buf[bytesRead] = '\0';
int16_t res = atoi(buf); int16_t res = atoi(buf);
return res; return res;