From bb61a591032087e4eb1d5ad09560baafaff56fed Mon Sep 17 00:00:00 2001 From: Philipp Jungkamp Date: Thu, 15 Jun 2023 09:12:32 +0200 Subject: [PATCH] node-webrtc: fix signaling client memory leak and error handling Signed-off-by: Philipp Jungkamp --- lib/nodes/webrtc/signaling_client.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/nodes/webrtc/signaling_client.cpp b/lib/nodes/webrtc/signaling_client.cpp index 30b95bb71..57e4dbc53 100644 --- a/lib/nodes/webrtc/signaling_client.cpp +++ b/lib/nodes/webrtc/signaling_client.cpp @@ -19,17 +19,22 @@ SignalingClient::SignalingClient(const std::string &srv, const std::string &sess running(false), logger(logging.get("webrtc:signal")) { + int ret; const char *prot, *a, *p; memset(&info, 0, sizeof(info)); - (void)!asprintf(&uri, "%s/%s", srv.c_str(), sess.c_str()); + ret = asprintf(&uri, "%s/%s", srv.c_str(), sess.c_str()); + if (ret < 0) + throw RuntimeError { "Could not format signaling server uri" }; - int ret = lws_parse_uri(uri, &prot, &a, &info.port, &p); + ret = lws_parse_uri(uri, &prot, &a, &info.port, &p); if (ret) throw RuntimeError("Failed to parse WebSocket URI: '{}'", uri); - (void)!asprintf(&path, "/%s", p); + ret = asprintf(&path, "/%s", p); + if (ret < 0) + throw RuntimeError { "Could not format signaling client path" }; info.ssl_connection = !strcmp(prot, "https"); info.address = a; @@ -202,6 +207,8 @@ int SignalingClient::receive(void *in, size_t len) cbMessage(SignalingMessage { json }); + json_decref(json); + return 0; }