From d280545aab59a581c25959d8af8372eb86c180cf Mon Sep 17 00:00:00 2001 From: suwatchai Date: Mon, 25 Nov 2019 20:50:43 +0700 Subject: [PATCH] Fix zero length string bugs. --- README.md | 4 ++-- library.properties | 2 +- src/FirebaseESP8266.cpp | 42 +++++++++++++++++++++++++---------------- src/FirebaseESP8266.h | 6 +++--- src/README.md | 2 +- 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 0a1f9546..9bdde70e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Firebase Realtime Database Arduino Library for ESP8266 -Google's Firebase Realtime Database Arduino Library for ESP8266 v 2.7.0 +Google's Firebase Realtime Database Arduino Library for ESP8266 v 2.7.1 This library supports ESP8266 MCU from Espressif. The following are platforms which library are also available. @@ -48,7 +48,7 @@ This library supports ESP8266 MCU from Espressif. The following are platforms wh ## Changes from earlier version -For library v 2.7.0 (comes with FirebaseJson v 2.2.7) or later, FirebaseJson object will be used to handle JSON data instead of JSON string which, the following functions are affected: +For library v 2.7.1 (comes with FirebaseJson v 2.2.7) or later, FirebaseJson object will be used to handle JSON data instead of JSON string which, the following functions are affected: getJson, setJson, pushJson, updateNode and updateNodeSilent. diff --git a/library.properties b/library.properties index dadfbc2e..52bc1e6b 100644 --- a/library.properties +++ b/library.properties @@ -1,6 +1,6 @@ name=Firebase ESP8266 Client -version=2.7.0 +version=2.7.1 author=Mobizt diff --git a/src/FirebaseESP8266.cpp b/src/FirebaseESP8266.cpp index e7ff65b6..adc442e8 100644 --- a/src/FirebaseESP8266.cpp +++ b/src/FirebaseESP8266.cpp @@ -1,12 +1,12 @@ /* - * Google's Firebase Realtime Database Arduino Library for ESP8266, version 2.7.0 + * Google's Firebase Realtime Database Arduino Library for ESP8266, version 2.7.1 * - * November 15, 2019 + * November 25, 2019 * * Feature Added: * * Feature Fixed: - * - Fix FirebaseJson set/remove bugs. + * - Fix zero length string bugs. * * * This library provides ESP8266 to perform REST API by GET PUT, POST, PATCH, DELETE data from/to with Google's Firebase database using get, set, update @@ -2884,21 +2884,25 @@ bool FirebaseESP8266::getServerResponse(FirebaseData &dataObj) memset(lineBuf, 0, FIREBASE_RESPONSE_SIZE); } - memset(fstr, 0, 60); - strcpy_P(fstr, ESP8266_FIREBASE_STR_14); - - p1 = strpos(lineBuf, fstr, 0); - if (p1 != -1) + if (strlen(lineBuf) > 0) { - hasEventData = true; - isStream = true; - dataObj._httpCode = _HTTP_CODE_OK; - memset(tmp, 0, tempBufSize); - strncpy(tmp, lineBuf + p1 + strlen_P(ESP8266_FIREBASE_STR_14), strlen(lineBuf) - p1 - strlen_P(ESP8266_FIREBASE_STR_14)); - memset(lineBuf, 0, FIREBASE_RESPONSE_SIZE); - strcpy(lineBuf, tmp); - break; + memset(fstr, 0, 60); + strcpy_P(fstr, ESP8266_FIREBASE_STR_14); + + p1 = strpos(lineBuf, fstr, 0); + if (p1 != -1) + { + hasEventData = true; + isStream = true; + dataObj._httpCode = _HTTP_CODE_OK; + + memset(tmp, 0, tempBufSize); + strncpy(tmp, lineBuf + p1 + strlen_P(ESP8266_FIREBASE_STR_14), strlen(lineBuf) - p1 - strlen_P(ESP8266_FIREBASE_STR_14)); + memset(lineBuf, 0, FIREBASE_RESPONSE_SIZE); + strcpy(lineBuf, tmp); + break; + } } } } @@ -5591,6 +5595,9 @@ void FirebaseESP8266::strcat_c(char *str, char c) int FirebaseESP8266::strpos(const char *haystack, const char *needle, int offset) { size_t len = strlen(haystack); + size_t len2 = strlen(needle); + if (len == 0 || len < len2 || len2 == 0) + return -1; char *_haystack = new char[len]; memset(_haystack, 0, len); strncpy(_haystack, haystack + offset, strlen(haystack) - offset); @@ -5605,6 +5612,9 @@ int FirebaseESP8266::strpos(const char *haystack, const char *needle, int offset int FirebaseESP8266::rstrpos(const char *haystack, const char *needle, int offset) { size_t len = strlen(haystack); + size_t len2 = strlen(needle); + if (len == 0 || len < len2 || len2 == 0) + return -1; char *_haystack = new char[len]; memset(_haystack, 0, len); strncpy(_haystack, haystack + offset, len - offset); diff --git a/src/FirebaseESP8266.h b/src/FirebaseESP8266.h index 72569110..f3763225 100644 --- a/src/FirebaseESP8266.h +++ b/src/FirebaseESP8266.h @@ -1,12 +1,12 @@ /* - * Google's Firebase Realtime Database Arduino Library for ESP8266, version 2.7.0 + * Google's Firebase Realtime Database Arduino Library for ESP8266, version 2.7.1 * - * November 15, 2019 + * November 25, 2019 * * Feature Added: * * Feature Fixed: - * - Fix FirebaseJson set/remove bugs. + * - Fix zero length string bugs. * * * This library provides ESP8266 to perform REST API by GET PUT, POST, PATCH, DELETE data from/to with Google's Firebase database using get, set, update diff --git a/src/README.md b/src/README.md index 11d82102..3adca857 100644 --- a/src/README.md +++ b/src/README.md @@ -1,7 +1,7 @@ # Firebase Realtime Database Arduino Library for ESP8266 -Google's Firebase Realtime Database Arduino Library for ESP8266 v 2.7.0 +Google's Firebase Realtime Database Arduino Library for ESP8266 v 2.7.1 ## Global functions