Skip to content

Commit c6f9902

Browse files
committed
fix(websocket): prevent NULL pointer crash in error handling
1 parent 8f140dd commit c6f9902

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
@@ -673,8 +673,9 @@ static int esp_websocket_client_send_with_exact_opcode(esp_websocket_client_hand
673673
esp_websocket_free_buf(client, true);
674674
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
675675
if (error_handle) {
676+
const char *error_name = esp_err_to_name(error_handle->last_error);
676677
esp_websocket_client_error(client, "esp_transport_write() returned %d, transport_error=%s, tls_error_code=%i, tls_flags=%i, errno=%d",
677-
ret, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
678+
ret, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
678679
error_handle->esp_tls_flags, errno);
679680
} else {
680681
esp_websocket_client_error(client, "esp_transport_write() returned %d, errno=%d", ret, errno);
@@ -1002,8 +1003,9 @@ static esp_err_t esp_websocket_client_recv(esp_websocket_client_handle_t client)
10021003
esp_websocket_free_buf(client, false);
10031004
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
10041005
if (error_handle) {
1006+
const char *error_name = esp_err_to_name(error_handle->last_error);
10051007
esp_websocket_client_error(client, "esp_transport_read() failed with %d, transport_error=%s, tls_error_code=%i, tls_flags=%i, errno=%d",
1006-
rlen, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
1008+
rlen, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
10071009
error_handle->esp_tls_flags, errno);
10081010
} else {
10091011
esp_websocket_client_error(client, "esp_transport_read() failed with %d, errno=%d", rlen, errno);
@@ -1097,9 +1099,10 @@ static void esp_websocket_client_task(void *pv)
10971099
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
10981100
client->error_handle.esp_ws_handshake_status_code = esp_transport_ws_get_upgrade_request_status(client->transport);
10991101
if (error_handle) {
1102+
const char *error_name = esp_err_to_name(error_handle->last_error);
11001103
esp_websocket_client_error(client, "esp_transport_connect() failed with %d, "
11011104
"transport_error=%s, tls_error_code=%i, tls_flags=%i, esp_ws_handshake_status_code=%d, errno=%d",
1102-
result, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
1105+
result, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
11031106
error_handle->esp_tls_flags, client->error_handle.esp_ws_handshake_status_code, errno);
11041107
} else {
11051108
esp_websocket_client_error(client, "esp_transport_connect() failed with %d, esp_ws_handshake_status_code=%d, errno=%d",
@@ -1204,8 +1207,9 @@ static void esp_websocket_client_task(void *pv)
12041207
if (read_select < 0) {
12051208
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);
12061209
if (error_handle) {
1210+
const char *error_name = esp_err_to_name(error_handle->last_error);
12071211
esp_websocket_client_error(client, "esp_transport_poll_read() returned %d, transport_error=%s, tls_error_code=%i, tls_flags=%i, errno=%d",
1208-
read_select, esp_err_to_name(error_handle->last_error), error_handle->esp_tls_error_code,
1212+
read_select, error_name ? error_name : "UNKNOWN", error_handle->esp_tls_error_code,
12091213
error_handle->esp_tls_flags, errno);
12101214
} else {
12111215
esp_websocket_client_error(client, "esp_transport_poll_read() returned %d, errno=%d", read_select, errno);

0 commit comments

Comments
 (0)