git » libvncserver.git » commit 0dc891a

add a patch to fix crashing when connecting to Mac hosts

author Felix Yan
2015-04-21 03:01:08 UTC
committer Felix Yan
2015-04-21 03:01:08 UTC
parent 8c5e29b771999ccf271bcd42aa3fa3b530845f19

add a patch to fix crashing when connecting to Mac hosts

PKGBUILD +13 -4
initialize-libgcrypt.patch +39 -0

diff --git a/PKGBUILD b/PKGBUILD
index 2d9c544..4e875e7 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,18 +1,27 @@
-# Maintainer:
+# Maintainer: Felix Yan <felixonmars@archlinux.org>
 # Contributor: Andrea Scarpino <andrea@archlinux.org>
 # Contributor: Tobias Powalowski <tpowa@archlinux.org>
 
 pkgname=libvncserver
 pkgver=0.9.10
-pkgrel=2
+pkgrel=3
 pkgdesc="A cross-platform C libraries that allow you to easily implement VNC server"
 arch=('i686' 'x86_64')
 url="https://libvnc.github.io/"
 license=('GPL')
 depends=('libpng' 'libjpeg' 'gnutls' 'libgcrypt' 'openssl')
 makedepends=('sdl')
-source=("https://github.com/LibVNC/libvncserver/archive/LibVNCServer-${pkgver}.tar.gz")
-md5sums=('e1b888fae717b06896f8aec100163d27')
+source=("https://github.com/LibVNC/libvncserver/archive/LibVNCServer-${pkgver}.tar.gz"
+        initialize-libgcrypt.patch)
+md5sums=('e1b888fae717b06896f8aec100163d27'
+         'e22024d3a81c45129411e39e7d143835')
+
+prepare() {
+  cd ${pkgname}-LibVNCServer-${pkgver}
+  # Fix crashing when connecting to Mac hosts
+  # Suggested by upstream: https://github.com/LibVNC/libvncserver/pull/51#issuecomment-68884516
+  patch -p1 -i ../initialize-libgcrypt.patch
+}
 
 build() {
   cd ${pkgname}-LibVNCServer-${pkgver}
diff --git a/initialize-libgcrypt.patch b/initialize-libgcrypt.patch
new file mode 100644
index 0000000..c7e7cfa
--- /dev/null
+++ b/initialize-libgcrypt.patch
@@ -0,0 +1,39 @@
+From 4674d4632b9ffc6779d9c9f79b8ebb53c12e29b2 Mon Sep 17 00:00:00 2001
+From: Floris Bos <bos@je-eigen-domein.nl>
+Date: Fri, 2 Jan 2015 16:36:05 +0100
+Subject: [PATCH] Initialize libgcrypt before use
+
+https://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.html
+"Before the library can be used, it must initialize itself.
+This is achieved by invoking the function gcry_check_version"
+
+Closes issue #45
+Tested with krdc + libgcrypt 1.6.1 (libgcrypt20-dev Ubunutu package)
+connecting to a Mac Mini.
+
+Signed-off-by: Floris Bos <bos@je-eigen-domein.nl>
+---
+ libvncclient/rfbproto.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/libvncclient/rfbproto.c b/libvncclient/rfbproto.c
+index f653850..aa74c23 100644
+--- a/libvncclient/rfbproto.c
++++ b/libvncclient/rfbproto.c
+@@ -857,6 +857,16 @@ HandleARDAuth(rfbClient *client)
+   rfbCredential *cred = NULL;
+   rfbBool result = FALSE;
+ 
++  if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P))
++  {
++    /* Application did not initialize gcrypt, so we should */
++    if (!gcry_check_version(GCRYPT_VERSION))
++    {
++      /* Older version of libgcrypt is installed on system than compiled against */
++      rfbClientLog("libgcrypt version mismatch.\n");
++    }
++  }
++
+   while (1)
+   {
+     if (!ReadFromRFBServer(client, (char *)gen, 2))