also fixed 'multiplier overflow' bug - YAY COMPILERS
This commit is contained in:
parent
7e888e576a
commit
58f5d0cda6
@ -253,7 +253,7 @@ uint16_t Adafruit_MQTT::readFullPacket(uint8_t *buffer, uint16_t timeout) {
|
|||||||
rlen = readPacket(pbuff, 1, timeout);
|
rlen = readPacket(pbuff, 1, timeout);
|
||||||
if (rlen != 1) return 0;
|
if (rlen != 1) return 0;
|
||||||
|
|
||||||
//DEBUG_PRINT(F("Packet Type:\t")); DEBUG_PRINTBUFFER(pbuff, rlen);
|
DEBUG_PRINT(F("Packet Type:\t")); DEBUG_PRINTBUFFER(pbuff, rlen);
|
||||||
pbuff++;
|
pbuff++;
|
||||||
|
|
||||||
uint32_t value = 0;
|
uint32_t value = 0;
|
||||||
@ -265,12 +265,11 @@ uint16_t Adafruit_MQTT::readFullPacket(uint8_t *buffer, uint16_t timeout) {
|
|||||||
if (rlen != 1) return 0;
|
if (rlen != 1) return 0;
|
||||||
encodedByte = pbuff[0]; // save the last read val
|
encodedByte = pbuff[0]; // save the last read val
|
||||||
pbuff++; // get ready for reading the next byte
|
pbuff++; // get ready for reading the next byte
|
||||||
|
|
||||||
uint32_t intermediate = encodedByte & 0x7F;
|
uint32_t intermediate = encodedByte & 0x7F;
|
||||||
intermediate *= multiplier;
|
intermediate *= multiplier;
|
||||||
value += intermediate;
|
value += intermediate;
|
||||||
multiplier *= 128;
|
multiplier *= 128;
|
||||||
if (multiplier > 128*128*128) {
|
if (multiplier > (128UL*128UL*128UL)) {
|
||||||
DEBUG_PRINT(F("Malformed packet len\n"));
|
DEBUG_PRINT(F("Malformed packet len\n"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ class Adafruit_MQTT_FONA : public Adafruit_MQTT {
|
|||||||
|
|
||||||
uint16_t readPacket(uint8_t *buffer, uint8_t maxlen, int16_t timeout) {
|
uint16_t readPacket(uint8_t *buffer, uint8_t maxlen, int16_t timeout) {
|
||||||
uint8_t *buffp = buffer;
|
uint8_t *buffp = buffer;
|
||||||
DEBUG_PRINTLN(F("Reading a packet.."));
|
DEBUG_PRINTLN(F("Reading data.."));
|
||||||
|
|
||||||
if (!fona->TCPconnected()) return 0;
|
if (!fona->TCPconnected()) return 0;
|
||||||
|
|
||||||
@ -81,9 +81,9 @@ class Adafruit_MQTT_FONA : public Adafruit_MQTT {
|
|||||||
uint16_t avail;
|
uint16_t avail;
|
||||||
|
|
||||||
while (fona->TCPconnected() && (timeout >= 0)) {
|
while (fona->TCPconnected() && (timeout >= 0)) {
|
||||||
DEBUG_PRINT('.');
|
//DEBUG_PRINT('.');
|
||||||
while (avail = fona->TCPavailable()) {
|
while (avail = fona->TCPavailable()) {
|
||||||
DEBUG_PRINT('!');
|
//DEBUG_PRINT('!');
|
||||||
|
|
||||||
if (len + avail > maxlen) {
|
if (len + avail > maxlen) {
|
||||||
avail = maxlen - len;
|
avail = maxlen - len;
|
||||||
@ -101,7 +101,7 @@ class Adafruit_MQTT_FONA : public Adafruit_MQTT {
|
|||||||
//DEBUG_PRINTLN((uint8_t)c, HEX);
|
//DEBUG_PRINTLN((uint8_t)c, HEX);
|
||||||
|
|
||||||
if (len == maxlen) { // we read all we want, bail
|
if (len == maxlen) { // we read all we want, bail
|
||||||
DEBUG_PRINT(F("Read packet:\t"));
|
DEBUG_PRINT(F("Read:\t"));
|
||||||
DEBUG_PRINTBUFFER(buffer, len);
|
DEBUG_PRINTBUFFER(buffer, len);
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user