mvadkert / rpms / tigervnc

Forked from rpms/tigervnc 6 years ago
Clone
Adam Tkac c2263a8
Index: common/rfb/CSecurityTLS.cxx
Adam Tkac c2263a8
===================================================================
Adam Tkac c2263a8
--- common/rfb/CSecurityTLS.cxx	(revision 4399)
Adam Tkac c2263a8
+++ common/rfb/CSecurityTLS.cxx	(revision 4400)
Adam Tkac c2263a8
@@ -171,8 +171,15 @@
Adam Tkac c2263a8
     if (!is->checkNoWait(1))
Adam Tkac c2263a8
       return false;
Adam Tkac c2263a8
 
Adam Tkac c2263a8
-    if (is->readU8() == 0)
Adam Tkac c2263a8
-      return true;
Adam Tkac c2263a8
+    if (is->readU8() == 0) {
Adam Tkac c2263a8
+      rdr::U32 result = is->readU32();
Adam Tkac c2263a8
+      CharArray reason;
Adam Tkac c2263a8
+      if (result == secResultFailed || result == secResultTooMany)
Adam Tkac c2263a8
+        reason.buf = is->readString();
Adam Tkac c2263a8
+      else
Adam Tkac c2263a8
+        reason.buf = strDup("Authentication failure (protocol error)");
Adam Tkac c2263a8
+      throw AuthFailureException(reason.buf);
Adam Tkac c2263a8
+    }
Adam Tkac c2263a8
 
Adam Tkac c2263a8
     if (gnutls_init(&session, GNUTLS_CLIENT) != GNUTLS_E_SUCCESS)
Adam Tkac c2263a8
       throw AuthFailureException("gnutls_init failed");