Fixes stream load memory leak in WifiSecureClient for SSL CACert, Certificate, and (#6387)

Private Key. Issue presented during any subsequent invocation of loadCACert, loadCertificate, and
loadPrivateKey, respectively, after the first invocation.
This commit is contained in:
Billy
2022-04-26 07:44:37 -04:00
committed by GitHub
parent b88a70a0bd
commit d7ffd573d0

View File

@ -315,6 +315,7 @@ char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) {
} }
bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) { bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) {
if (_CA_cert != NULL) free(const_cast<char*>(_CA_cert));
char *dest = _streamLoad(stream, size); char *dest = _streamLoad(stream, size);
bool ret = false; bool ret = false;
if (dest) { if (dest) {
@ -325,6 +326,7 @@ bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) {
} }
bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) { bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) {
if (_cert != NULL) free(const_cast<char*>(_cert));
char *dest = _streamLoad(stream, size); char *dest = _streamLoad(stream, size);
bool ret = false; bool ret = false;
if (dest) { if (dest) {
@ -335,6 +337,7 @@ bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) {
} }
bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) { bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) {
if (_private_key != NULL) free(const_cast<char*>(_private_key));
char *dest = _streamLoad(stream, size); char *dest = _streamLoad(stream, size);
bool ret = false; bool ret = false;
if (dest) { if (dest) {