diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 587a247..586a68d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,38 +1,2 @@ -/gnome-remote-desktop-0.1.*.tar.xz -/gnome-remote-desktop-40.beta.tar.xz -/gnome-remote-desktop-40.rc.tar.xz -/gnome-remote-desktop-40.0.tar.xz -/gnome-remote-desktop-40.1.tar.xz -/gnome-remote-desktop-41.rc.tar.xz -/gnome-remote-desktop-41.0.tar.xz -/gnome-remote-desktop-41.1.tar.xz -/gnome-remote-desktop-41.2.tar.xz -/gnome-remote-desktop-42.beta.tar.xz -/gnome-remote-desktop-42.rc.tar.xz -/gnome-remote-desktop-42.0.tar.xz -/gnome-remote-desktop-42.1.tar.xz -/gnome-remote-desktop-42.1.1.tar.xz -/gnome-remote-desktop-42.2.tar.xz -/gnome-remote-desktop-42.3.tar.xz -/gnome-remote-desktop-43.alpha.tar.xz -/gnome-remote-desktop-43.beta.tar.xz -/gnome-remote-desktop-43.0.tar.xz -/gnome-remote-desktop-43.1.tar.xz -/gnome-remote-desktop-43.2.tar.xz -/gnome-remote-desktop-44.alpha.tar.xz -/gnome-remote-desktop-44.rc.tar.xz -/gnome-remote-desktop-44.0.tar.xz -/gnome-remote-desktop-44.1.tar.xz -/gnome-remote-desktop-44.2.tar.xz -/gnome-remote-desktop-45.alpha.tar.xz -/gnome-remote-desktop-45.beta.tar.xz -/gnome-remote-desktop-45.rc.tar.xz -/gnome-remote-desktop-45.0.tar.xz -/gnome-remote-desktop-45.1.tar.xz -/gnome-remote-desktop-46.0.tar.xz -/gnome-remote-desktop-46.1.tar.xz -/gnome-remote-desktop-46.2.tar.xz -/gnome-remote-desktop-47.alpha.tar.xz -/gnome-remote-desktop-47.beta.tar.xz -/gnome-remote-desktop-47.rc.tar.xz -/gnome-remote-desktop-47.0.tar.xz +/gnome-remote-desktop-*.tar.xz +/gnome-remote-desktop-*-build diff --git a/gnome-remote-desktop.spec b/gnome-remote-desktop.spec index 941aae8..5d15c82 100644 --- a/gnome-remote-desktop.spec +++ b/gnome-remote-desktop.spec @@ -12,13 +12,13 @@ %global pipewire_version 0.3.49 Name: gnome-remote-desktop -Version: 47.0 -Release: 1%{?dist} +Version: 49.2 +Release: %autorelease Summary: GNOME Remote Desktop screen share service License: GPL-2.0-or-later URL: https://gitlab.gnome.org/GNOME/gnome-remote-desktop -Source0: https://download.gnome.org/sources/%{name}/47/%{name}-%{tarball_version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/49/%{name}-%{tarball_version}.tar.xz # Adds encryption support (requires patched LibVNCServer) Patch0: gnutls-anontls.patch @@ -32,11 +32,15 @@ BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(ffnvcodec) %if %{with rdp} +BuildRequires: glslc +BuildRequires: spirv-tools BuildRequires: pkgconfig(fdk-aac) BuildRequires: pkgconfig(freerdp3) BuildRequires: pkgconfig(fuse3) +BuildRequires: pkgconfig(libva) BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(polkit-gobject-1) +BuildRequires: pkgconfig(vulkan) BuildRequires: pkgconfig(winpr3) %endif BuildRequires: pkgconfig(gbm) @@ -147,241 +151,4 @@ GNOME desktop environment. %changelog -* Mon Sep 16 2024 nmontero - 47.0-1 -- Update to 47.0 - -* Sun Sep 01 2024 David King - 47~rc-1 -- Update to 47.rc - -* Wed Aug 14 2024 nmontero - 47~beta-1 -- Update to 47.beta - -* Thu Jul 18 2024 Fedora Release Engineering - 47~alpha-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed Jul 10 2024 David King - 47~alpha-1 -- Update to 47.alpha - -* Thu May 23 2024 Nieves Montero - 46.2-1 -- Update to 46.2 - -* Thu Apr 18 2024 David King - 46.1-1 -- Update to 46.1 - -* Thu Mar 28 2024 Adam Williamson - 46.0-2 -- Correct systemd macros - -* Wed Jan 24 2024 Fedora Release Engineering - 45.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 45.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Nov 24 2023 Yaakov Selkowitz - 45.1-2 -- Disable VNC in RHEL 10+ - -* Sun Oct 22 2023 Kalev Lember - 45.1-1 -- Update to 45.1 - -* Sat Oct 21 2023 Kalev Lember - 45.0-1 -- Update to 45.0 - -* Tue Sep 05 2023 Kalev Lember - 45.rc-1 -- Update to 45.rc - -* Fri Aug 11 2023 Kalev Lember - 45.beta-1 -- Update to 45.beta - -* Wed Jul 19 2023 Fedora Release Engineering - 45.alpha-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Wed Jul 05 2023 Jonas Ådahl - 45~alpha-1 -- Update to 45.alpha - -* Wed May 31 2023 Kalev Lember - 44.2-1 -- Update to 44.2 - -* Mon Apr 24 2023 David King - 44.1-1 -- Update to 44.1 - -* Sun Mar 19 2023 David King - 44.0-1 -- Update to 44.0 - -* Thu Mar 16 2023 Jonas Ådahl - 44~rc-2 -- Enable RDP in ELN - -* Sun Mar 05 2023 David King - 44~rc-1 -- Update to 44.rc - -* Mon Feb 06 2023 David King - 44~alpha-1 -- Update to 44.alpha - -* Thu Jan 19 2023 Fedora Release Engineering - 43.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Dec 08 2022 David King - 43.2-1 -- Update to 43.2 - -* Tue Nov 08 2022 Stephen Gallagher - 43.1-2 -- Fix build on RHEL 9+/ELN - -* Thu Oct 27 2022 David King - 43.1-1 -- Update to 43.1 - -* Tue Sep 20 2022 Jonas Ådahl - 43.0 -- Update to 43.0 - -* Thu Aug 18 2022 Jonas Ådahl - 43~beta-4 -- Drop dependency on tpm2-abrmd - -* Tue Aug 16 2022 Kalev Lember - 43~beta-3 -- Avoid manual requires on tss2* and rely on automatic soname deps instead - -* Mon Aug 15 2022 Simone Caronni - 43~beta-2 -- Rebuild for updated FreeRDP. - -* Thu Aug 11 2022 Jonas Ådahl - 43~beta -- Update to 43.beta - -* Fri Jul 29 2022 Tomas Popela - 43~alpha-2 -- FreeRDP is built without server support in RHEL and ELN so we should disable - the RDP there - -* Thu Jul 28 2022 Jonas Ådahl - 43~alpha -- Update to 43.alpha - -* Thu Jul 21 2022 Fedora Release Engineering - 42.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jul 07 2022 David King - 42.3-1 -- Update to 43.3 (#2091415) - -* Sun May 29 2022 David King - 42.2-1 -- Update to 42.2 - -* Wed May 11 2022 David King - 42.1.1-1 -- Update to 42.1.1 (#2061546) - -* Wed Apr 27 2022 David King - 42.1-2 -- Fix isa macro in Requires - -* Tue Apr 26 2022 David King - 42.1-1 -- Update to 42.1 (#2061546) - -* Mon Mar 21 2022 Jonas Ådahl - 42.0 -- Update to 42.0 - -* Mon Mar 14 2022 Jonas Ådahl - 42~rc-1 -- Update to 42.rc - -* Wed Feb 16 2022 Jonas Ådahl - 42~beta-1 -- Update to 42.beta - -* Thu Jan 20 2022 Fedora Release Engineering - 41.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Dec 08 2021 Jonas Ådahl - 41.2-1 -- Update to 41.2 - -* Mon Nov 01 2021 Kalev Lember - 41.1-1 -- Update to 41.1 - -* Mon Sep 20 2021 Kalev Lember - 41.0-1 -- Update to 41.0 - -* Tue Sep 07 2021 Jonas Ådahl - 41~rc-1 -- Bump to 41.rc - -* Wed Aug 04 2021 Kalev Lember - 40.1-3 -- Avoid systemd_requires as per updated packaging guidelines - -* Thu Jul 22 2021 Fedora Release Engineering - 40.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Mon May 03 2021 Jonas Ådahl - 40.1-1 -- Bump to 40.1 - -* Thu Apr 15 2021 Simone Caronni - 40.0-2 -- Rebuild for updated FreeRDP. - -* Mon Mar 22 2021 Kalev Lember - 40.0-1 -- Update to 40.0 - -* Thu Mar 18 2021 Michael Catanzaro - 40.0~rc-2 -- Add Obsoletes: vino - -* Mon Mar 15 2021 Kalev Lember - 40.0~rc-1 -- Update to 40.rc - -* Thu Mar 04 2021 Jonas Ådahl - 40.0~beta-1 -- Bump to 40.beta - -* Tue Jan 26 2021 Fedora Release Engineering - 0.1.9-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Sep 14 2020 Jonas Ådahl - 0.1.9-2 -- Copy using the right destination stride - -* Mon Sep 14 2020 Jonas Ådahl - 0.1.9-1 -- Update to 0.1.9 -- Backport race condition crash fix -- Rebase anon-tls patches - -* Thu Aug 27 2020 Ray Strode - 0.1.8-3 -- Fix crash - Related: #1844993 - -* Mon Jun 1 2020 Felipe Borges - 0.1.8-2 -- Fix black screen issue in remote connections on Wayland - -* Wed Mar 11 2020 Jonas Ådahl - 0.1.8-1 -- Update to 0.1.8 - -* Tue Jan 28 2020 Fedora Release Engineering - 0.1.7-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Jul 25 2019 Fedora Release Engineering - 0.1.7-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Mon Mar 4 2019 Jonas Ådahl - 0.1.7-1 -- Update to 0.1.7 - -* Thu Jan 31 2019 Fedora Release Engineering - 0.1.6-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Tue Oct 2 2018 Jonas Ådahl - 0.1.6-2 -- Don't crash when PipeWire disconnects (rhbz#1632781) - -* Tue Aug 7 2018 Jonas Ådahl - 0.1.6 -- Update to 0.1.6 -- Apply ANON-TLS patch -- Depend on pipewire 0.2.2 - -* Fri Jul 13 2018 Fedora Release Engineering - 0.1.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed May 30 2018 Jonas Ådahl - 0.1.4-1 -- Update to new version - -* Fri Feb 09 2018 Igor Gnatenko - 0.1.2-5 -- Escape macros in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 0.1.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Aug 29 2017 Jonas Ådahl - 0.1.2-3 -- Use %%autosetup -- Install licence file - -* Tue Aug 22 2017 Jonas Ådahl - 0.1.2-2 -- Remove gschema compilation step as that had been deprecated - -* Mon Aug 21 2017 Jonas Ådahl - 0.1.2-1 -- Update to 0.1.2 -- Changed tabs to spaces -- Added systemd user macros -- Install to correct systemd user unit directory -- Compile gsettings schemas after install and uninstall - -* Mon Aug 21 2017 Jonas Ådahl - 0.1.1-1 -- First packaged version +%autochangelog diff --git a/gnutls-anontls.patch b/gnutls-anontls.patch index 56d91f6..6151d72 100644 --- a/gnutls-anontls.patch +++ b/gnutls-anontls.patch @@ -1,4 +1,4 @@ -From 0e754e3a90f486c031da535656584673016107a3 Mon Sep 17 00:00:00 2001 +From 005617f3e2cb59241dc02c2db714c2b934553acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 14 Jun 2018 12:21:37 +0200 Subject: [PATCH 1/7] vnc: Add anonymous TLS encryption support @@ -13,22 +13,22 @@ VNC connection. src/grd-enums.h | 6 + src/grd-session-vnc.c | 120 ++++- src/grd-session-vnc.h | 17 + - src/grd-settings-user.c | 3 + + src/grd-settings-user.c | 4 + src/grd-settings.c | 18 + src/grd-vnc-server.c | 49 ++ src/grd-vnc-tls.c | 444 ++++++++++++++++++ src/grd-vnc-tls.h | 28 ++ src/meson.build | 3 + ...nome.desktop.remote-desktop.gschema.xml.in | 10 + - 11 files changed, 673 insertions(+), 26 deletions(-) + 11 files changed, 674 insertions(+), 26 deletions(-) create mode 100644 src/grd-vnc-tls.c create mode 100644 src/grd-vnc-tls.h diff --git a/meson.build b/meson.build -index 995863ce..40733a6e 100644 +index 5dcb77c3..269238c0 100644 --- a/meson.build +++ b/meson.build -@@ -62,6 +62,7 @@ endif +@@ -70,6 +70,7 @@ endif if have_vnc libvncclient_dep = dependency('libvncclient') libvncserver_dep = dependency('libvncserver') @@ -37,10 +37,10 @@ index 995863ce..40733a6e 100644 prefix = get_option('prefix') diff --git a/src/grd-enums.h b/src/grd-enums.h -index 028bdf9a..47a1d921 100644 +index 25b42661..f4438764 100644 --- a/src/grd-enums.h +++ b/src/grd-enums.h -@@ -33,6 +33,12 @@ typedef enum +@@ -32,6 +32,12 @@ typedef enum GRD_VNC_AUTH_METHOD_PASSWORD } GrdVncAuthMethod; @@ -54,7 +54,7 @@ index 028bdf9a..47a1d921 100644 { GRD_VNC_SCREEN_SHARE_MODE_MIRROR_PRIMARY, diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 0ca76e89..e13ac013 100644 +index f7e14080..b5e4fe13 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -46,7 +46,9 @@ struct _GrdSessionVnc @@ -248,10 +248,10 @@ index 0ca76e89..e13ac013 100644 G_OBJECT_CLASS (grd_session_vnc_parent_class)->dispose (object); diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index be79cf4a..ffc8d27a 100644 +index 8fc71850..3c08f812 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -37,6 +37,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, +@@ -36,6 +36,9 @@ G_DECLARE_FINAL_TYPE (GrdSessionVnc, GRD, SESSION_VNC, GrdSession) @@ -261,7 +261,7 @@ index be79cf4a..ffc8d27a 100644 GrdSessionVnc *grd_session_vnc_new (GrdVncServer *vnc_server, GSocketConnection *connection); -@@ -63,6 +66,20 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc, +@@ -62,4 +65,18 @@ void grd_session_vnc_set_client_clipboard_text (GrdSessionVnc *session_vnc, int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int width); @@ -270,7 +270,7 @@ index be79cf4a..ffc8d27a 100644 +int grd_session_vnc_get_framebuffer_stride (GrdSessionVnc *session_vnc); + gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); - ++ +rfbClientPtr grd_session_vnc_get_rfb_client (GrdSessionVnc *session_vnc); + +void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, @@ -280,24 +280,23 @@ index be79cf4a..ffc8d27a 100644 + GrdVncSocketGrabFunc grab_func); + +GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); -+ - #endif /* GRD_SESSION_VNC_H */ diff --git a/src/grd-settings-user.c b/src/grd-settings-user.c -index 20b81a94..34115078 100644 +index 1bd679e4..c54e0b80 100644 --- a/src/grd-settings-user.c +++ b/src/grd-settings-user.c -@@ -79,6 +79,9 @@ grd_settings_user_constructed (GObject *object) - g_settings_bind (settings->vnc_settings, "auth-method", - settings, "vnc-auth-method", +@@ -91,6 +91,10 @@ grd_settings_user_constructed (GObject *object) + g_settings_bind (settings->vnc_settings, "screen-share-mode", + settings, "vnc-screen-share-mode", G_SETTINGS_BIND_DEFAULT); + g_settings_bind (settings->vnc_settings, "encryption", + settings, "vnc-encryption", + G_SETTINGS_BIND_DEFAULT); ++ - switch (grd_settings_get_runtime_mode (GRD_SETTINGS (settings))) - { + G_OBJECT_CLASS (grd_settings_user_parent_class)->constructed (object); + } diff --git a/src/grd-settings.c b/src/grd-settings.c -index fba1d714..f3475010 100644 +index 8393ace5..a65385ef 100644 --- a/src/grd-settings.c +++ b/src/grd-settings.c @@ -58,6 +58,7 @@ enum @@ -316,7 +315,7 @@ index fba1d714..f3475010 100644 } vnc; } GrdSettingsPrivate; -@@ -425,6 +427,9 @@ grd_settings_get_property (GObject *object, +@@ -426,6 +428,9 @@ grd_settings_get_property (GObject *object, else g_value_set_enum (value, priv->vnc.auth_method); break; @@ -326,7 +325,7 @@ index fba1d714..f3475010 100644 default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } -@@ -562,6 +567,9 @@ grd_settings_set_property (GObject *object, +@@ -563,6 +568,9 @@ grd_settings_set_property (GObject *object, case PROP_VNC_AUTH_METHOD: priv->vnc.auth_method = g_value_get_enum (value); break; @@ -336,7 +335,7 @@ index fba1d714..f3475010 100644 default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } -@@ -743,4 +751,14 @@ grd_settings_class_init (GrdSettingsClass *klass) +@@ -744,4 +752,14 @@ grd_settings_class_init (GrdSettingsClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); @@ -352,7 +351,7 @@ index fba1d714..f3475010 100644 + G_PARAM_STATIC_STRINGS)); } diff --git a/src/grd-vnc-server.c b/src/grd-vnc-server.c -index 877272d2..59a13db5 100644 +index 83220655..2f8229b2 100644 --- a/src/grd-vnc-server.c +++ b/src/grd-vnc-server.c @@ -24,6 +24,7 @@ @@ -417,7 +416,7 @@ index 877272d2..59a13db5 100644 gboolean grd_vnc_server_start (GrdVncServer *vnc_server, GError **error) -@@ -241,11 +282,19 @@ grd_vnc_server_dispose (GObject *object) +@@ -242,11 +283,19 @@ grd_vnc_server_dispose (GObject *object) static void grd_vnc_server_constructed (GObject *object) { @@ -922,10 +921,10 @@ index 00000000..135ef8c7 + +#endif /* GRD_VNC_TLS_H */ diff --git a/src/meson.build b/src/meson.build -index 914e2cc1..4e820c59 100644 +index 1b2cb93d..6b8b517e 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -188,10 +188,13 @@ if have_vnc +@@ -274,10 +274,13 @@ if have_vnc 'grd-vnc-pipewire-stream.h', 'grd-vnc-server.c', 'grd-vnc-server.h', @@ -940,10 +939,10 @@ index 914e2cc1..4e820c59 100644 endif diff --git a/src/org.gnome.desktop.remote-desktop.gschema.xml.in b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -index c3d583c1..8a736c82 100644 +index 2986a0e5..a0169789 100644 --- a/src/org.gnome.desktop.remote-desktop.gschema.xml.in +++ b/src/org.gnome.desktop.remote-desktop.gschema.xml.in -@@ -148,5 +148,15 @@ +@@ -173,6 +173,16 @@ configuration updates. @@ -958,12 +957,13 @@ index c3d583c1..8a736c82 100644 + + - + + -- -2.44.0 +2.51.0 -From 6e5f6deab459acdd1e7785ab6975932f2815548f Mon Sep 17 00:00:00 2001 +From bc65e13fb3687b2f79433c880525333810d6ba31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:02:09 +0100 Subject: [PATCH 2/7] session-vnc: Add paused/resumed signals @@ -976,7 +976,7 @@ out-of-socket source. 1 file changed, 65 insertions(+), 7 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index e13ac013..30820d7d 100644 +index b5e4fe13..79de30d4 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -42,14 +42,27 @@ @@ -1109,9 +1109,9 @@ index e13ac013..30820d7d 100644 } static void -@@ -1020,4 +1065,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) - session_class->remote_desktop_session_started = - grd_session_vnc_remote_desktop_session_started; +@@ -1021,4 +1066,17 @@ grd_session_vnc_class_init (GrdSessionVncClass *klass) + + session_class->stop = grd_session_vnc_stop; session_class->on_stream_created = grd_session_vnc_on_stream_created; + + signals[PAUSED] = g_signal_new ("paused", @@ -1128,10 +1128,10 @@ index e13ac013..30820d7d 100644 + G_TYPE_NONE, 0); } -- -2.44.0 +2.51.0 -From 00f4fdfc676361f5f71e6f6b346c11cb7088b836 Mon Sep 17 00:00:00 2001 +From aabc0245e247fbffe9ae6b8281cbf2bccc9ab882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:03:46 +0100 Subject: [PATCH 3/7] session-vnc: Add grd_session_vnc_dispatch() helper @@ -1144,7 +1144,7 @@ available that is not visible to the socket source. 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 30820d7d..3ee06f79 100644 +index 79de30d4..b48b9017 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -771,6 +771,21 @@ vnc_socket_grab_func (GrdSessionVnc *session_vnc, @@ -1188,23 +1188,21 @@ index 30820d7d..3ee06f79 100644 else { diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index ffc8d27a..a86d61d2 100644 +index 3c08f812..f230887e 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -79,4 +79,6 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); +void grd_session_vnc_dispatch (GrdSessionVnc *session_vnc); + GrdVncServer * grd_session_vnc_get_vnc_server (GrdSessionVnc *session_vnc); - - #endif /* GRD_SESSION_VNC_H */ -- -2.44.0 +2.51.0 -From 69efe6df5e9e8548c0241a612980af31f1dc5c5a Mon Sep 17 00:00:00 2001 +From 2d43f0586ae24b202beda4d283b25fec3e722af7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:05:13 +0100 Subject: [PATCH 4/7] vnc/tls: Add some logging @@ -1278,10 +1276,10 @@ index ec4758e0..ac6c35f6 100644 { g_warning ("TLS handshake failed: %s", error->message); -- -2.44.0 +2.51.0 -From 2a11c4f47165b62409f4428b9de1bda59c6ebb2f Mon Sep 17 00:00:00 2001 +From 62e04d794eaf2c0acfc16af0b0968fead4bb4df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 11:07:40 +0100 Subject: [PATCH 5/7] vnc/tls: Dispatch also when data is pending outside of @@ -1298,10 +1296,10 @@ long as there is data to read in those buffers. 2 files changed, 86 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index a86d61d2..5db388b0 100644 +index f230887e..9dd33442 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -80,6 +80,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, +@@ -79,6 +79,8 @@ void grd_session_vnc_grab_socket (GrdSessionVnc *session_vnc, void grd_session_vnc_ungrab_socket (GrdSessionVnc *session_vnc, GrdVncSocketGrabFunc grab_func); @@ -1448,10 +1446,10 @@ index ac6c35f6..312b6b92 100644 } -- -2.44.0 +2.51.0 -From 1ed580b541ab5c3b815d8e29cf3aa71f1de0b649 Mon Sep 17 00:00:00 2001 +From 799e2b287bd055c46709d0063436b819894200e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 27 Nov 2019 16:48:00 +0100 Subject: [PATCH 6/7] session-vnc: Set our own password handling function up @@ -1470,7 +1468,7 @@ password prompt. 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/grd-session-vnc.c b/src/grd-session-vnc.c -index 3ee06f79..6e118d88 100644 +index b48b9017..87cc7d86 100644 --- a/src/grd-session-vnc.c +++ b/src/grd-session-vnc.c @@ -99,11 +99,6 @@ grd_session_vnc_pause (GrdSessionVnc *session_vnc); @@ -1503,10 +1501,10 @@ index 3ee06f79..6e118d88 100644 rfbProcessEvents (rfb_screen, 0); } -- -2.44.0 +2.51.0 -From 9b7b729d9f945fcb2942c74d8ab7a9b62d6cf4bd Mon Sep 17 00:00:00 2001 +From b74286bdb8876d27d279c725357d73a23a3316b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 12 Oct 2020 17:34:30 +0200 Subject: [PATCH 7/7] vnc: Copy pixels using the right destination stride @@ -1524,10 +1522,10 @@ dropped. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/grd-session-vnc.h b/src/grd-session-vnc.h -index 5db388b0..c4f4e8d4 100644 +index 9dd33442..98c73451 100644 --- a/src/grd-session-vnc.h +++ b/src/grd-session-vnc.h -@@ -68,7 +68,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, +@@ -67,7 +67,8 @@ int grd_session_vnc_get_stride_for_width (GrdSessionVnc *session_vnc, int grd_session_vnc_get_fd (GrdSessionVnc *session_vnc); @@ -1538,5 +1536,6 @@ index 5db388b0..c4f4e8d4 100644 gboolean grd_session_vnc_is_client_gone (GrdSessionVnc *session_vnc); -- -2.44.0 +2.51.0 + diff --git a/plans/main.fmf b/plans/main.fmf new file mode 100644 index 0000000..ae0c305 --- /dev/null +++ b/plans/main.fmf @@ -0,0 +1,6 @@ +summary: Run all tests +execute: + how: tmt +discover: + how: fmf + diff --git a/sources b/sources index 5f92995..d817ea5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-remote-desktop-47.0.tar.xz) = 3e00aaf649756d69dca2bf862c43b16327ce8dc66f0efbd8f23779b32f083867317077e9fe26be870aa50818559edb9ed1964005e74dfc65822f26ed533cfb98 +SHA512 (gnome-remote-desktop-49.2.tar.xz) = b678ee125e1b5f6d58e85f57a332cf02ee6b5dee654469e66f496f9467e6512a701a3e37a9580562e0b064320380d2df4ca6b15e20bd35b1605b4bd9de73827c diff --git a/tests/got-audit/got-audit.gdb b/tests/got-audit/got-audit.gdb new file mode 100644 index 0000000..6661297 --- /dev/null +++ b/tests/got-audit/got-audit.gdb @@ -0,0 +1,2 @@ +gef config gef.disable_color True +got-audit --all diff --git a/tests/got-audit/main.fmf b/tests/got-audit/main.fmf new file mode 100644 index 0000000..25caf1d --- /dev/null +++ b/tests/got-audit/main.fmf @@ -0,0 +1,10 @@ +summary: Audit the GOT for signs of tampering +description: | + Pointers in the server process GOT will be checked to ensure that + each function pointer's value is within a shared object file + that exports a symbol of that name, and that no shared object + files export conflicting symbols. +contact: Gordon Messmer +require+: + - gdb-gef # needed to test got-audit + - gnome-remote-desktop diff --git a/tests/got-audit/runtest.sh b/tests/got-audit/runtest.sh new file mode 100755 index 0000000..c4b9b29 --- /dev/null +++ b/tests/got-audit/runtest.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/gnome-remote-desktop/Sanity/got-audit +# Description: Check pointers in the server process GOT for signs of tampering +# Author: Gordon Messmer +# + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + rlRun "systemctl start --user gnome-remote-desktop-headless" + rlRun "TestDir=\$(pwd)" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlRun "auditfile=\$(mktemp --tmpdir=${TmpDir})" + rlPhaseEnd + + rlPhaseStartTest "Run GEF got-audit" + rlRun "SERVICE_PID=\$( systemctl show --property=MainPID --user gnome-remote-desktop-headless.service | cut -f2 -d= )" + rlRun "echo SERVICE_PID is '$SERVICE_PID'" + [ -n "$SERVICE_PID" ] || rlFail "No service pid was found" + rlRun "gdb-gef --pid '$SERVICE_PID' --command='$TestDir'/got-audit.gdb --batch > '$auditfile'" + # Basic test: ensure that at least one symbol is found in libc.so, + # to verify that the report looks plausible. + rlAssertGrep " : /.*/libc.so" "$auditfile" + # Ensure the got-audit did not report any errors + rlAssertNotGrep " :: ERROR" "$auditfile" + rlRun "cp '$auditfile' '$TMT_TEST_DATA'/got-audit.txt" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "systemctl stop --user gnome-remote-desktop-headless" + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..f225a72 --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,2 @@ +test: ./runtest.sh +framework: beakerlib