From 3b31484b5029c103b41ef50ada971987b808fe61 Mon Sep 17 00:00:00 2001 From: Sebastian Guarino Date: Sat, 27 Nov 2021 19:47:08 +0100 Subject: [PATCH 1/2] Temporary fix --- .../WiFiClientSecure/src/WiFiClientSecure.cpp | 24 ++++++++++++++++++- .../WiFiClientSecure/src/WiFiClientSecure.h | 2 ++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp index 4f19d57a4d0..4904a47c6cc 100644 --- a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp +++ b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp @@ -261,21 +261,25 @@ void WiFiClientSecure::setInsecure() void WiFiClientSecure::setCACert (const char *rootCA) { _CA_cert = rootCA; + _use_insecure = false; } void WiFiClientSecure::setCertificate (const char *client_ca) { _cert = client_ca; + _use_insecure = false; } void WiFiClientSecure::setPrivateKey (const char *private_key) { _private_key = private_key; + _use_insecure = false; } void WiFiClientSecure::setPreSharedKey(const char *pskIdent, const char *psKey) { _pskIdent = pskIdent; _psKey = psKey; + _use_insecure = false; } bool WiFiClientSecure::verify(const char* fp, const char* domain_name) @@ -300,8 +304,26 @@ char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) { return dest; } +bool WiFiClientSecure::_streamLoad(char **destPtr, Stream& stream, size_t size) { + if (!*destPtr) + *destPtr = (char*)malloc(size+1); + else + (char*)realloc(*destPtr, size+1); + if (!*destPtr) { + return false; + } + if (size != stream.readBytes(*destPtr, size)) { + free(*destPtr); + *destPtr = nullptr; + return false; + } + (*destPtr)[size] = '\0'; + return true; +} + bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) { - char *dest = _streamLoad(stream, size); + char *dest = _CA_cert; + _streamLoad(&dest, stream, size); bool ret = false; if (dest) { setCACert(dest); diff --git a/libraries/WiFiClientSecure/src/WiFiClientSecure.h b/libraries/WiFiClientSecure/src/WiFiClientSecure.h index bba94ceffbc..5b9033a2a9d 100644 --- a/libraries/WiFiClientSecure/src/WiFiClientSecure.h +++ b/libraries/WiFiClientSecure/src/WiFiClientSecure.h @@ -77,6 +77,7 @@ class WiFiClientSecure : public WiFiClient void setAlpnProtocols(const char **alpn_protos); const mbedtls_x509_crt* getPeerCertificate() { return mbedtls_ssl_get_peer_cert(&sslclient->ssl_ctx); }; bool getFingerprintSHA256(uint8_t sha256_result[32]) { return get_peer_fingerprint(sslclient, sha256_result); }; + int setTimeout(uint32_t seconds){ return 0; } operator bool() @@ -105,6 +106,7 @@ class WiFiClientSecure : public WiFiClient private: char *_streamLoad(Stream& stream, size_t size); + bool _streamLoad(char **destPtr, Stream& stream, size_t size); //friend class WiFiServer; using Print::write; From 1e962d32e23b43a8f19aceaa29e3f1a2a302131d Mon Sep 17 00:00:00 2001 From: Sebastian Guarino Date: Sat, 25 Dec 2021 20:59:10 +0100 Subject: [PATCH 2/2] Fix realloc return of new pointer --- libraries/WiFiClientSecure/src/WiFiClientSecure.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp index 4904a47c6cc..f4565bcae58 100644 --- a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp +++ b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp @@ -305,10 +305,7 @@ char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) { } bool WiFiClientSecure::_streamLoad(char **destPtr, Stream& stream, size_t size) { - if (!*destPtr) - *destPtr = (char*)malloc(size+1); - else - (char*)realloc(*destPtr, size+1); + *destPtr = (char*)realloc(*destPtr, size+1); if (!*destPtr) { return false; }