summaryrefslogtreecommitdiff
path: root/modules/websocket
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2018-11-03 23:21:23 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2018-11-03 23:39:15 +0100
commite3008b71c3949c4fd8e34952ce3e4d5d8551da48 (patch)
tree030b212e379448737ed0c16fbe45cbf731482077 /modules/websocket
parent121cead38e5ea84ec22139df02eee56d822290b7 (diff)
Fix access to freed mem in WS client after #23241
I was wrong in assuming that String had to survive long enough to avoid it, what actually needed to survive was the CharString obtained from the acsii() or utf8() function. At least according to valgrind
Diffstat (limited to 'modules/websocket')
-rw-r--r--modules/websocket/lws_client.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/modules/websocket/lws_client.cpp b/modules/websocket/lws_client.cpp
index d71d091720..07583bb85b 100644
--- a/modules/websocket/lws_client.cpp
+++ b/modules/websocket/lws_client.cpp
@@ -90,12 +90,13 @@ Error LWSClient::connect_to_host(String p_host, String p_path, uint16_t p_port,
i.ssl_connection = 0;
}
- // This String needs to survive till we call lws_client_connect_via_info
- String addr_str = (String)addr;
-
- i.address = addr_str.ascii().get_data();
- i.host = p_host.utf8().get_data();
- i.path = p_path.utf8().get_data();
+ // These CharStrings needs to survive till we call lws_client_connect_via_info
+ CharString addr_ch = ((String)addr).ascii();
+ CharString host_ch = p_host.utf8();
+ CharString path_ch = p_path.utf8();
+ i.address = addr_ch.get_data();
+ i.host = host_ch.get_data();
+ i.path = path_ch.get_data();
i.port = p_port;
lws_client_connect_via_info(&i);