Skip to content

Commit 388d302

Browse files
authoredMay 1, 2020
Fix minor GCC10 static analyzer warnings (#7255)
Add minor NULL and double-free checks to source, identified using GCC10 pre-release static `-fanalyzer` on the coude. These are harmless to other versions. Also add explicit include of stdint to Schedule.h, because libstdc++20 will not automatically include it. Safe and no-op on earlier versions.
1 parent a9cf12f commit 388d302

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed
 

Diff for: ‎cores/esp8266/Schedule.h

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#define ESP_SCHEDULE_H
33

44
#include <functional>
5+
#include <stdint.h>
56

67
#define SCHEDULED_FN_MAX_COUNT 32
78

Diff for: ‎libraries/ESP8266WiFi/src/BearSSLHelpers.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,8 @@ namespace brssl {
234234
if (po) {
235235
free(po->name);
236236
free(po->data);
237+
po->name = nullptr;
238+
po->data = nullptr;
237239
}
238240
}
239241

Diff for: ‎libraries/ESP8266WiFi/src/WiFiClientSecureAxTLS.cpp

+16-12
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ int WiFiClientSecure::_connectSSL(const char* hostName)
125125
{
126126
if (!_ssl) {
127127
_ssl = std::make_shared<SSLContext>();
128+
if (!_ssl) {
129+
return 0;
130+
}
128131
}
129132
_ssl->connect(_client, hostName, _timeout);
130133

@@ -170,8 +173,7 @@ size_t WiFiClientSecure::write(Stream& stream)
170173
size_t totalSent = 0;
171174
size_t countRead;
172175
size_t countSent;
173-
if (!_ssl)
174-
{
176+
if (!_ssl) {
175177
return 0;
176178
}
177179
do {
@@ -399,61 +401,63 @@ void WiFiClientSecure::_initSSLContext()
399401
bool WiFiClientSecure::setCACert(const uint8_t* pk, size_t size)
400402
{
401403
_initSSLContext();
402-
return _ssl->loadObject(SSL_OBJ_X509_CACERT, pk, size);
404+
return _ssl ? _ssl->loadObject(SSL_OBJ_X509_CACERT, pk, size) : false;
403405
}
404406

405407
bool WiFiClientSecure::setCertificate(const uint8_t* pk, size_t size)
406408
{
407409
_initSSLContext();
408-
return _ssl->loadObject(SSL_OBJ_X509_CERT, pk, size);
410+
return _ssl ? _ssl->loadObject(SSL_OBJ_X509_CERT, pk, size) : false;
409411
}
410412

411413
bool WiFiClientSecure::setPrivateKey(const uint8_t* pk, size_t size)
412414
{
413415
_initSSLContext();
414-
return _ssl->loadObject(SSL_OBJ_RSA_KEY, pk, size);
416+
return _ssl ? _ssl->loadObject(SSL_OBJ_RSA_KEY, pk, size) : false;
415417
}
416418

417419
bool WiFiClientSecure::setCACert_P(PGM_VOID_P pk, size_t size)
418420
{
419421
_initSSLContext();
420-
return _ssl->loadObject_P(SSL_OBJ_X509_CACERT, pk, size);
422+
return _ssl ? _ssl->loadObject_P(SSL_OBJ_X509_CACERT, pk, size) : false;
421423
}
422424

423425
bool WiFiClientSecure::setCertificate_P(PGM_VOID_P pk, size_t size)
424426
{
425427
_initSSLContext();
426-
return _ssl->loadObject_P(SSL_OBJ_X509_CERT, pk, size);
428+
return _ssl ? _ssl->loadObject_P(SSL_OBJ_X509_CERT, pk, size) : false;
427429
}
428430

429431
bool WiFiClientSecure::setPrivateKey_P(PGM_VOID_P pk, size_t size)
430432
{
431433
_initSSLContext();
432-
return _ssl->loadObject_P(SSL_OBJ_RSA_KEY, pk, size);
434+
return _ssl ? _ssl->loadObject_P(SSL_OBJ_RSA_KEY, pk, size) : false;
433435
}
434436

435437
bool WiFiClientSecure::loadCACert(Stream& stream, size_t size)
436438
{
437439
_initSSLContext();
438-
return _ssl->loadObject(SSL_OBJ_X509_CACERT, stream, size);
440+
return _ssl ? _ssl->loadObject(SSL_OBJ_X509_CACERT, stream, size) : false;
439441
}
440442

441443
bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size)
442444
{
443445
_initSSLContext();
444-
return _ssl->loadObject(SSL_OBJ_X509_CERT, stream, size);
446+
return _ssl ? _ssl->loadObject(SSL_OBJ_X509_CERT, stream, size) : false;
445447
}
446448

447449
bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size)
448450
{
449451
_initSSLContext();
450-
return _ssl->loadObject(SSL_OBJ_RSA_KEY, stream, size);
452+
return _ssl ? _ssl->loadObject(SSL_OBJ_RSA_KEY, stream, size) : false;
451453
}
452454

453455
void WiFiClientSecure::allowSelfSignedCerts()
454456
{
455457
_initSSLContext();
456-
_ssl->allowSelfSignedCerts();
458+
if (_ssl) {
459+
_ssl->allowSelfSignedCerts();
460+
}
457461
}
458462

459463
extern "C" int __ax_port_read(int fd, uint8_t* buffer, size_t count)

0 commit comments

Comments
 (0)
Please sign in to comment.