diff --git a/components/tcp_transport/transport_ws.c b/components/tcp_transport/transport_ws.c index 46c00d9f005..ead7d0173cf 100644 --- a/components/tcp_transport/transport_ws.c +++ b/components/tcp_transport/transport_ws.c @@ -277,13 +277,14 @@ static int ws_connect(esp_transport_handle_t t, const char *host, int port, int } if(ws->response_header) { + int copy_len = header_len; if(ws->response_header_len - 1 < header_len) { ESP_LOGW(TAG, "Received header length exceedes the allocated buffer size (need=%d, allocated=%d), truncating to allocated size", header_len, ws->response_header_len); - header_len = ws->response_header_len; + copy_len = ws->response_header_len - 1; } // Copy response header to the static array - strncpy(ws->response_header, ws->buffer, header_len); - ws->response_header[ws->response_header_len - 1] = '\0'; + strncpy(ws->response_header, ws->buffer, copy_len); + ws->response_header[copy_len] = '\0'; } char* delim_ptr = strstr(ws->buffer, delimiter);