]> source.dussan.org Git - tigervnc.git/commitdiff
Add workaround for Vino's VeNCrypt implementation to Java viewer 260/head
authorBrian P. Hinz <bphinz@users.sf.net>
Sun, 17 Jan 2016 15:57:51 +0000 (10:57 -0500)
committerBrian P. Hinz <bphinz@users.sf.net>
Sun, 17 Jan 2016 15:57:51 +0000 (10:57 -0500)
Implemented Pierre's workaround (1f8aba3) to java viewer.

java/com/tigervnc/rfb/Security.java

index d841c632ef3b54c3994199672094e1ae40696228..a68ae3e94e9cca15c49fdd5d2e65f33a77e1319a 100644 (file)
@@ -1,6 +1,6 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
  * Copyright (C) 2010 TigerVNC Team
- * Copyright (C) 2011 Brian P. Hinz
+ * Copyright (C) 2011-2015 Brian P. Hinz
  *
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -76,7 +76,19 @@ public class Security {
   {
     List<Integer> result = new ArrayList<Integer>();
 
-    result.add(secTypeVeNCrypt);
+   /* Partial workaround for Vino's stupid behaviour. It doesn't allow
+    * the basic authentication types as part of the VeNCrypt handshake,
+    * making it impossible for a client to do opportunistic encryption.
+    * At least make it possible to connect when encryption is explicitly
+    * disabled. */
+    for (Iterator<Integer> i = enabledSecTypes.iterator(); i.hasNext(); ) {
+      int refType = (Integer)i.next();
+      if (refType >= 0x100) {
+        result.add(secTypeVeNCrypt);
+        break;
+      }
+    }
+
     for (Iterator<Integer> i = enabledSecTypes.iterator(); i.hasNext(); ) {
       int refType = (Integer)i.next();
       if (refType < 0x100)