Update to 1.6.90 (1.7.0 beta)

This commit is contained in:
Jan Grulich 2016-07-18 09:54:18 +02:00
parent 9f4ad561e6
commit f3e66b1c19
9 changed files with 9 additions and 183 deletions

2
.gitignore vendored
View File

@ -17,3 +17,5 @@ tigervnc-1.0.90-20100721svn4113.tar.bz2
/tigervnc-1.5.0.tar.gz
/tigervnc-1.5.90.tar.gz
/tigervnc-1.6.0.tar.gz
/sources
/tigervnc-1.6.90.tar.gz

View File

@ -1 +1,2 @@
78b736445781d86c48e942465a391ccc tigervnc-1.6.0.tar.gz
1abcba521de0c2f35f8d5bbcd18e8dcb sources
1d653f1a3cdfc2887b7cf38a8b65c89a tigervnc-1.6.90.tar.gz

View File

@ -1,37 +0,0 @@
diff -up tigervnc-1.0.90-20091221svn3929/unix/vncserver.cookie tigervnc-1.0.90-20091221svn3929/unix/vncserver
--- tigervnc-1.0.90-20091221svn3929/unix/vncserver.cookie 2009-11-12 11:39:54.000000000 +0100
+++ tigervnc-1.0.90-20091221svn3929/unix/vncserver 2009-12-21 16:15:01.907799091 +0100
@@ -189,27 +189,12 @@ $vncPort = 5900 + $displayNumber;
$desktopLog = "$vncUserDir/$host:$displayNumber.log";
unlink($desktopLog);
-# Make an X server cookie - use /dev/urandom on systems that have it,
-# otherwise use perl's random number generator, seeded with the sum
-# of the current time, our PID and part of the encrypted form of the password.
-
-my $cookie = "";
-if (open(URANDOM, '<', '/dev/urandom')) {
- my $randata;
- if (sysread(URANDOM, $randata, 16) == 16) {
- $cookie = unpack 'h*', $randata;
- }
- close(URANDOM);
-}
-if ($cookie eq "") {
- srand(time+$$+unpack("L",`cat $vncUserDir/passwd`));
- for (1..16) {
- $cookie .= sprintf("%02x", int(rand(256)) % 256);
- }
-}
-
-system("xauth -f $xauthorityFile add $host:$displayNumber . $cookie");
-system("xauth -f $xauthorityFile add $host/unix:$displayNumber . $cookie");
+# Make an X server cookie - use mcookie
+$cookie = `/usr/bin/mcookie`;
+open (XAUTH, "|xauth -f $xauthorityFile source -");
+print XAUTH "add $host:$displayNumber . $cookie\n";
+print XAUTH "add $host/unix:$displayNumber . $cookie\n";
+close XAUTH;
if ($opt{'-name'}) {
$desktopName = $opt{'-name'};

View File

@ -1,56 +0,0 @@
diff --git a/common/network/TcpSocket.cxx b/common/network/TcpSocket.cxx
index 5a8f75d..6ef8f2e 100644
--- a/common/network/TcpSocket.cxx
+++ b/common/network/TcpSocket.cxx
@@ -360,18 +360,12 @@ bool TcpSocket::cork(int sock, bool enable) {
#endif
}
-bool TcpSocket::isSocket(int sock)
+bool TcpSocket::isListening(int sock)
{
- vnc_sockaddr_t sa;
- socklen_t sa_size = sizeof(sa);
- return getsockname(sock, &sa.u.sa, &sa_size) >= 0;
-}
-
-bool TcpSocket::isConnected(int sock)
-{
- vnc_sockaddr_t sa;
- socklen_t sa_size = sizeof(sa);
- return getpeername(sock, &sa.u.sa, &sa_size) >= 0;
+ int listening = 0;
+ socklen_t listening_size = sizeof(listening);
+ return getsockopt(sock, SOL_SOCKET, SO_ACCEPTCONN, &listening,
+ &listening_size) >= 0 && listening;
}
int TcpSocket::getSockPort(int sock)
diff --git a/common/network/TcpSocket.h b/common/network/TcpSocket.h
index 02f04c9..a97e683 100644
--- a/common/network/TcpSocket.h
+++ b/common/network/TcpSocket.h
@@ -65,8 +65,7 @@ namespace network {
static bool enableNagles(int sock, bool enable);
static bool cork(int sock, bool enable);
- static bool isSocket(int sock);
- static bool isConnected(int sock);
+ static bool isListening(int sock);
static int getSockPort(int sock);
private:
bool closeFd;
diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc
index 2d918b0..863cd36 100644
--- a/unix/xserver/hw/vnc/vncExtInit.cc
+++ b/unix/xserver/hw/vnc/vncExtInit.cc
@@ -137,8 +137,7 @@ void vncExtensionInit(void)
std::list<network::TcpListener*> listeners;
std::list<network::TcpListener*> httpListeners;
if (scr == 0 && vncInetdSock != -1) {
- if (network::TcpSocket::isSocket(vncInetdSock) &&
- !network::TcpSocket::isConnected(vncInetdSock))
+ if (network::TcpSocket::isListening(vncInetdSock))
{
listeners.push_back(new network::TcpListener(vncInetdSock));
vlog.info("inetd wait");

View File

@ -1,12 +0,0 @@
diff --git a/unix/xserver/hw/vnc/Input.c b/unix/xserver/hw/vnc/Input.c
--- a/unix/xserver/hw/vnc/Input.c
+++ b/unix/xserver/hw/vnc/Input.c
@@ -301,7 +301,7 @@ static inline void pressKey(DeviceIntPtr dev, int kc, Bool down, const char *msg
n = GetKeyboardEvents(eventq, dev, action, kc);
enqueueEvents(dev, n);
#else
- QueueKeyboardEvents(dev, action, kc, NULL);
+ QueueKeyboardEvents(dev, action, kc);
#endif
}

View File

@ -1,16 +0,0 @@
diff -Nur tigervnc-49d0629dd87c0eb695d72dec7481e9169f55ae9e.orig/unix/xserver/hw/vnc/xorg-version.h tigervnc-49d0629dd87c0eb695d72dec7481e9169f55ae9e/unix/xserver/hw/vnc/xorg-version.h
--- tigervnc-49d0629dd87c0eb695d72dec7481e9169f55ae9e.orig/unix/xserver/hw/vnc/xorg-version.h 2015-03-01 12:58:35.000000000 -0700
+++ tigervnc-49d0629dd87c0eb695d72dec7481e9169f55ae9e/unix/xserver/hw/vnc/xorg-version.h 2015-08-04 09:46:14.796336147 -0600
@@ -48,8 +48,10 @@
#define XORG 116
#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (17 * 100000) + (99 * 1000))
#define XORG 117
+#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (18 * 100000) + (99 * 1000))
+#define XORG 118
#else
-#error "X.Org newer than 1.17 is not supported"
+#error "X.Org newer than 1.18 is not supported"
#endif
#endif

View File

@ -1,6 +1,6 @@
Name: tigervnc
Version: 1.6.0
Release: 6%{?dist}
Version: 1.6.90
Release: 1%{?dist}
Summary: A TigerVNC remote display system
%global _hardened_build 1
@ -45,16 +45,11 @@ Obsoletes: vnc < 4.1.3-2, vnc-libs < 4.1.3-2
Provides: tightvnc = 1.5.0-0.15.20090204svn3586
Obsoletes: tightvnc < 1.5.0-0.15.20090204svn3586
Patch1: tigervnc-cookie.patch
Patch3: tigervnc-libvnc-os.patch
Patch4: tigervnc11-rh692048.patch
Patch5: tigervnc-inetd-nowait.patch
Patch7: tigervnc-manpages.patch
Patch8: tigervnc-getmaster.patch
Patch9: tigervnc-shebang.patch
Patch14: tigervnc-xstartup.patch
Patch15: tigervnc-xserver118.patch
Patch17: tigervnc-xorg118-QueueKeyboardEvents.patch
Patch18: tigervnc-utilize-system-crypto-policies.patch
# This is tigervnc-%%{version}/unix/xserver116.patch rebased on the latest xorg
@ -153,9 +148,7 @@ This package contains icons for TigerVNC viewer
%prep
%setup -q
%patch1 -p1 -b .cookie
%patch3 -p1 -b .libvnc-os
%patch4 -p1 -b .rh692048
cp -r /usr/share/xorg-x11-server-source/* unix/xserver
pushd unix/xserver
@ -165,10 +158,6 @@ done
%patch100 -p1 -b .xserver116-rebased
popd
# Applied Debian patch to fix busy loop when run from inetd in nowait
# mode (bug #920373).
%patch5 -p1 -b .inetd-nowait
# Synchronise manpages and --help output (bug #980870).
%patch7 -p1 -b .manpages
@ -181,13 +170,6 @@ popd
# Clearer xstartup file (bug #923655).
%patch14 -p1 -b .xstartup
# Allow build against xorg-x11-server-1.18.
%patch15 -p1 -b .xserver118
%if 0%{?fedora} >= 23
%patch17 -p1 -b .xorg118-QueueKeyboardEvents
%endif
# Utilize system-wide crypto policies
%patch18 -p1 -b .utilize-system-crypto-policies.patch
@ -359,6 +341,9 @@ fi
%{_datadir}/icons/hicolor/*/apps/*
%changelog
* Mon Jul 18 2016 Jan Grulich <jgrulich@redhat.com> - 1.6.90-1
- Update to 1.6.90 (1.7.0 beta)
* Wed Jun 01 2016 Jan Grulich <jgrulich@redhat.com> - 1.6.0-6
- Try to pickup upstream fix for compatibility with gtk vnc clients

View File

@ -1,30 +0,0 @@
From 1f8aba3147ec13aaa70a44372775b72bb4e59941 Mon Sep 17 00:00:00 2001
From: Pierre Ossman <ossman@cendio.se>
Date: Tue, 29 Dec 2015 15:02:11 +0100
Subject: Add workaround for Vino's VeNCrypt implementation
diff --git a/common/rfb/Security.cxx b/common/rfb/Security.cxx
index e623ab5..0666041 100644
--- a/common/rfb/Security.cxx
+++ b/common/rfb/Security.cxx
@@ -74,7 +74,18 @@ const std::list<rdr::U8> Security::GetEnabledSecTypes(void)
list<rdr::U8> result;
list<U32>::iterator i;
- result.push_back(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 (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++) {
+ if (*i >= 0x100) {
+ result.push_back(secTypeVeNCrypt);
+ break;
+ }
+ }
+
for (i = enabledSecTypes.begin(); i != enabledSecTypes.end(); i++)
if (*i < 0x100)
result.push_back(*i);

View File

@ -1,11 +0,0 @@
[Desktop Entry]
Name=TigerVNC Viewer
Name[fr]=Visionneur TigerVNC
Comment=Connect to VNC server and display remote desktop
Comment[fr]=Se connecter à un serveur VNC et afficher le bureau distant
Exec=/usr/bin/vncviewer
Icon=tigervnc
Terminal=false
Type=Application
StartupWMClass=TigerVNC Viewer: Connection Details
Categories=Network;RemoteAccess;