[Spice-devel] [PATCH spice-server 02/10] reds: Fix leaks if reds_init_client_ssl_connection fails

Frediano Ziglio fziglio at redhat.com
Mon Sep 11 10:15:39 UTC 2017


If a client is able to complete the TLS handshake phase
reds_init_client_ssl_connection leaked some memory
as the stream is not correctly freed.
This also cause the stream to send the SPICE_CHANNEL_EVENT_DISCONNECTED
event. Otherwise only SPICE_CHANNEL_EVENT_CONNECTED was sent.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/reds.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/server/reds.c b/server/reds.c
index 24ec2bdde..5da716fc2 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2503,7 +2503,10 @@ static RedLinkInfo *reds_init_client_ssl_connection(RedsState *reds, int socket)
     return link;
 
 error:
-    free(link->stream);
+    /* close the stream but do not close the socket, this API is
+     * supposed to not close it if it fails */
+    link->stream->socket = -1;
+    reds_stream_free(link->stream);
     BN_free(link->tiTicketing.bn);
     free(link);
     return NULL;
-- 
2.13.5



More information about the Spice-devel mailing list