Blob Blame History Raw
From 51435d3f946d6d2b99b876b7919b9d41022fc408 Mon Sep 17 00:00:00 2001
From: David King <dking@redhat.com>
Date: Wed, 11 Sep 2013 16:08:47 +0100
Subject: [PATCH] Reject new clients if in the deferred state

As mentioned in bug 641811, Vino can get stuck trying to process the
same data in an infinite loop if an authentication request is received
from a client while that client is in the deferred state.

Avoid this situation by closing new connections from the same client
when it is in the deferred state.
---
 server/libvncserver/rfbserver.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/server/libvncserver/rfbserver.c b/server/libvncserver/rfbserver.c
index 7dfbff9..1295219 100644
--- a/server/libvncserver/rfbserver.c
+++ b/server/libvncserver/rfbserver.c
@@ -387,7 +387,8 @@ rfbProcessClientMessage(rfbClientPtr cl)
         rfbAuthProcessClientMessage(cl);
         return;
     case RFB_AUTH_DEFERRED:
-	rfbLog("Authentication deferred - ignoring client message\n");
+	rfbLog("Authentication deferred for this client - closing connection\n");
+	rfbCloseClient(cl);
 	return;
     case RFB_INITIALISATION:
         rfbProcessClientInitMessage(cl);
-- 
1.8.3.1