Package: guix-patches;
Reported by: Mehmet Tekman <mtekman89 <at> gmail.com>
Date: Thu, 6 Oct 2022 17:32:02 UTC
Severity: normal
Tags: moreinfo, patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Mehmet Tekman <mtekman89 <at> gmail.com> To: guix-patches <at> gnu.org Subject: [PATCH] Add x11vnc recipe Date: Thu, 6 Oct 2022 18:05:31 +0200
--- gnu/packages/patches/x11vnc-gcc10-fix.patch | 42 ++++++++++ ...c-scan-limit-access-to-shared-memory.patch | 22 ++++++ .../patches/x11vnc-xfc-null-ptr.patch | 29 +++++++ gnu/packages/x11vnc.scm | 79 +++++++++++++++++++ 4 files changed, 172 insertions(+) create mode 100644 gnu/packages/patches/x11vnc-gcc10-fix.patch create mode 100644 gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memory.patch create mode 100644 gnu/packages/patches/x11vnc-xfc-null-ptr.patch create mode 100644 gnu/packages/x11vnc.scm diff --git a/gnu/packages/patches/x11vnc-gcc10-fix.patch b/gnu/packages/patches/x11vnc-gcc10-fix.patch new file mode 100644 index 0000000000..a32d5785d9 --- /dev/null +++ b/gnu/packages/patches/x11vnc-gcc10-fix.patch @@ -0,0 +1,42 @@ +From a48b0b1cd887d7f3ae67f525d7d334bd2feffe60 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy <alexander <at> tsoy.me> +Date: Tue, 28 Jan 2020 22:21:01 +0300 +Subject: [PATCH] Fix build with -fno-common + +GCC 10 defaults to -fno-common +--- + src/util.c | 3 +++ + src/util.h | 6 +++--- + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/util.c b/src/util.c +index a82a1a42..6a52ebf4 100644 +--- a/src/util.c ++++ b/src/util.c +@@ -47,6 +47,9 @@ int hxl = 0; + #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD + MUTEX(x11Mutex); + MUTEX(scrollMutex); ++MUTEX(clientMutex); ++MUTEX(inputMutex); ++MUTEX(pointerMutex); + #endif + + int nfix(int i, int n); +diff --git a/src/util.h b/src/util.h +index 35c1afd2..99b5dd1d 100644 +--- a/src/util.h ++++ b/src/util.h +@@ -102,9 +102,9 @@ extern struct timeval _mysleep; + #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD + extern MUTEX(x11Mutex); + extern MUTEX(scrollMutex); +-MUTEX(clientMutex); +-MUTEX(inputMutex); +-MUTEX(pointerMutex); ++extern MUTEX(clientMutex); ++extern MUTEX(inputMutex); ++extern MUTEX(pointerMutex); + #endif + + #define X_INIT INIT_MUTEX(x11Mutex) diff --git a/gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memory.patch b/gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memory.patch new file mode 100644 index 0000000000..5424094434 --- /dev/null +++ b/gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memory.patch @@ -0,0 +1,22 @@ +From 69eeb9f7baa14ca03b16c9de821f9876def7a36a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Gu=C3=A9nal=20DAVALAN?= <guenal.davalan <at> uca.fr> +Date: Wed, 18 Nov 2020 08:40:45 +0100 +Subject: [PATCH] scan: limit access to shared memory segments to current user + +--- + src/scan.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/scan.c b/src/scan.c +index 43e00d20..12994d52 100644 +--- a/src/scan.c ++++ b/src/scan.c +@@ -320,7 +320,7 @@ static int shm_create(XShmSegmentInfo *shm, XImage **ximg_ptr, int w, int h, + + #if HAVE_XSHM + shm->shmid = shmget(IPC_PRIVATE, +- xim->bytes_per_line * xim->height, IPC_CREAT | 0777); ++ xim->bytes_per_line * xim->height, IPC_CREAT | 0600); + + if (shm->shmid == -1) { + rfbErr("shmget(%s) failed.\n", name); diff --git a/gnu/packages/patches/x11vnc-xfc-null-ptr.patch b/gnu/packages/patches/x11vnc-xfc-null-ptr.patch new file mode 100644 index 0000000000..65f339d716 --- /dev/null +++ b/gnu/packages/patches/x11vnc-xfc-null-ptr.patch @@ -0,0 +1,29 @@ +From 95a10ab64c2dbbec2c8dad91a5ffb73a0d68474b Mon Sep 17 00:00:00 2001 +From: Jonathan Liu <net147 <at> gmail.com> +Date: Mon, 16 Mar 2020 20:04:06 +1100 +Subject: [PATCH] src/cursor: fix xfc NULL pointer dereference + +xfc->width and xfc->height for the XFixes cursor image returned from +XFixesGetCursorImage(dpy) are accessed without first checking that xfc +is not NULL. This can result in the server sometimes crashing when +moving a Google Chrome window. + +Fixes: 37c946191a0f ("Broken cursor bugfix for 64 bit systems (#49)") +Signed-off-by: Jonathan Liu <net147 <at> gmail.com> +--- + src/cursor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cursor.c b/src/cursor.c +index 39e73a69..74a08c69 100644 +--- a/src/cursor.c ++++ b/src/cursor.c +@@ -1311,7 +1311,7 @@ static int get_exact_cursor(int init) { + + /* retrieve the cursor info + pixels from server: */ + xfc = XFixesGetCursorImage(dpy); +- { ++ if (xfc) { + /* 2017-07-09, Stephan Fuhrmann: This fixes an implementation flaw for 64 bit systems. + * The XFixesCursorImage structure says xfc->pixels is (unsigned long*) in the structure, but + * the protocol spec says it's 32 bit per pixel diff --git a/gnu/packages/x11vnc.scm b/gnu/packages/x11vnc.scm new file mode 100644 index 0000000000..55c51305b3 --- /dev/null +++ b/gnu/packages/x11vnc.scm @@ -0,0 +1,79 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2022 Mehmet Tekman <mtekman89 <at> gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + + +(define-module (gnu packages x11vnc) + #:use-module (guix packages) + #:use-module (gnu packages) + #:use-module (gnu packages perl) + #:use-module (gnu packages tcl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xorg) + #:use-module (gnu packages tls) + #:use-module (guix git-download) + #:use-module (guix build-system gnu) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages autotools) + #:use-module (gnu packages avahi) + #:use-module (gnu packages vnc) + #:use-module (gnu packages compression) + #:use-module (gnu packages image)) + +(define-public x11vnc + (let ((commit "4ca006fed80410bd9b061a1519bd5d9366bb0bc8") + (version "0.9.16") + (revision "1")) + (package + (name "x11vnc") + (version (git-version version revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/LibVNC/x11vnc") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1g652mmi79pfq4p5p7spaswa164rpzjhc5rn2phy5pm71lm0vib1")) + (patches + (search-patches "x11vnc-xfc-null-ptr.patch" + "x11vnc-gcc10-fix.patch" + "x11vnc-scan-limit-access-to-shared-memory.patch")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases + %standard-phases + (add-before 'bootstrap 'delete-premature-configure + (lambda _ (substitute* "./autogen.sh" + ((".*/configure") ""))))))) + (native-inputs (list + ;; [optional requirements] + ;; perl tk + autoconf automake autobuild pkg-config avahi libvnc + libx11 libxcomposite libxdamage libxext libxfixes libxi + libxinerama libxrandr libxtst + openssl xdpyinfo zlib libjpeg-turbo xf86-video-dummy)) + (synopsis "VNC server for real X displays") + (home-page "https://github.com/LibVNC/x11vnc") + (description + "x11vnc allows one to view remotely and interact with real X +displays (i.e. a display corresponding to a physical monitor, keyboard, and +mouse) with any VNC viewer. In this way it plays the role for Unix/X11 that +WinVNC plays for Windows.") + (license license:gpl2)))) -- 2.38.0
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.