Skip to content

Commit fb37ea6

Browse files
committed
fix(websocket): prevent NULL pointer crash in error handling
1 parent 767a090 commit fb37ea6

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

components/esp_websocket_client/esp_websocket_client.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -712,8 +712,9 @@ static int esp_websocket_client_send_with_exact_opcode(esp_websocket_client_hand
712712
#endif
713713
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
714714
if (error_handle) {
715+
const char *error_name = esp_err_to_name(error_handle->last_error);
715716
esp_websocket_client_error(client, "esp_transport_write() returned %d, transport_error=%s, tls_error_code=%i, tls_flags=%i, errno=%d",
716-
ret, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
717+
ret, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
717718
error_handle->esp_tls_flags, errno);
718719
} else {
719720
esp_websocket_client_error(client, "esp_transport_write() returned %d, errno=%d", ret, errno);
@@ -1049,8 +1050,9 @@ static esp_err_t esp_websocket_client_recv(esp_websocket_client_handle_t client)
10491050
esp_websocket_free_buf(client, false);
10501051
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
10511052
if (error_handle) {
1053+
const char *error_name = esp_err_to_name(error_handle->last_error);
10521054
esp_websocket_client_error(client, "esp_transport_read() failed with %d, transport_error=%s, tls_error_code=%i, tls_flags=%i, errno=%d",
1053-
rlen, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
1055+
rlen, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
10541056
error_handle->esp_tls_flags, errno);
10551057
} else {
10561058
esp_websocket_client_error(client, "esp_transport_read() failed with %d, errno=%d", rlen, errno);
@@ -1163,9 +1165,10 @@ static void esp_websocket_client_task(void *pv)
11631165
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
11641166
client->error_handle.esp_ws_handshake_status_code = esp_transport_ws_get_upgrade_request_status(client->transport);
11651167
if (error_handle) {
1168+
const char *error_name = esp_err_to_name(error_handle->last_error);
11661169
esp_websocket_client_error(client, "esp_transport_connect() failed with %d, "
11671170
"transport_error=%s, tls_error_code=%i, tls_flags=%i, esp_ws_handshake_status_code=%d, errno=%d",
1168-
result, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
1171+
result, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
11691172
error_handle->esp_tls_flags, client->error_handle.esp_ws_handshake_status_code, errno);
11701173
} else {
11711174
esp_websocket_client_error(client, "esp_transport_connect() failed with %d, esp_ws_handshake_status_code=%d, errno=%d",
@@ -1323,8 +1326,9 @@ static void esp_websocket_client_task(void *pv)
13231326
xSemaphoreTakeRecursive(client->lock, lock_timeout);
13241327
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
13251328
if (error_handle) {
1329+
const char *error_name = esp_err_to_name(error_handle->last_error);
13261330
esp_websocket_client_error(client, "esp_transport_poll_read() returned %d, transport_error=%s, tls_error_code=%i, tls_flags=%i, errno=%d",
1327-
read_select, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
1331+
read_select, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
13281332
error_handle->esp_tls_flags, errno);
13291333
} else {
13301334
esp_websocket_client_error(client, "esp_transport_poll_read() returned %d, errno=%d", read_select, errno);

0 commit comments

Comments
 (0)