From 85e1ec1b1a237d26995403e3127a2b66c357cf08 Mon Sep 17 00:00:00 2001 From: leigh123linux Date: May 27 2018 10:04:50 +0000 Subject: lightdm-1.26.0 --- diff --git a/.gitignore b/.gitignore index 93ff619..48f3c0d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /lightdm-1.25.0.tar.gz /lightdm-1.25.1.tar.gz /lightdm-1.25.2.tar.gz +/lightdm-1.26.0.tar.gz diff --git a/2031_2030.diff b/2031_2030.diff deleted file mode 100644 index 2dacced..0000000 --- a/2031_2030.diff +++ /dev/null @@ -1,141 +0,0 @@ -=== modified file 'src/xdmcp-server.c' ---- src/xdmcp-server.c 2015-11-20 01:14:42 +0000 -+++ src/xdmcp-server.c 2016-04-28 07:09:26 +0000 -@@ -56,6 +56,13 @@ - /* Maximum number of milliseconds client will resend manage requests before giving up */ - #define MANAGE_TIMEOUT 126000 - -+/* Address sort support structure */ -+typedef struct -+{ -+ gsize index; -+ GInetAddress *address; -+} AddrSortItem; -+ - XDMCPServer * - xdmcp_server_new (void) - { -@@ -355,54 +362,90 @@ - } - } - --static gssize --find_address (GInetAddress **addresses, gsize length, GSocketFamily family) -+/* Sort function to order XDMCP addresses by which is best to connect to */ -+static gint -+compare_addresses (gconstpointer a, gconstpointer b, gpointer user_data) - { -- int i; -- -- for (i = 0; i < length; i++) -+ const AddrSortItem *item_a = a; -+ const AddrSortItem *item_b = b; -+ GInetAddress *source_address = user_data; -+ GSocketFamily family_a; -+ GSocketFamily family_b; -+ gboolean is_link_local; -+ -+ /* Prefer non link-local addresses */ -+ is_link_local = g_inet_address_get_is_link_local (item_a->address); -+ if (is_link_local != g_inet_address_get_is_link_local (item_b->address)) -+ return is_link_local ? 1 : -1; -+ -+ /* Prefer the source address family */ -+ family_a = g_inet_address_get_family (item_a->address); -+ family_b = g_inet_address_get_family (item_b->address); -+ if (family_a != family_b) - { -- GInetAddress *address = addresses[i]; -- if (address && g_inet_address_get_family (address) == family) -- return i; -+ GSocketFamily family; -+ -+ family = g_inet_address_get_family (source_address); -+ if (family_a == family) -+ return -1; -+ if (family_b == family) -+ return 1; -+ return family_a < family_b ? -1 : 1; - } - -- return -1; -+ /* Check equality */ -+ if (g_inet_address_equal (item_a->address, item_b->address)) -+ return 0; -+ -+ /* Prefer the source address */ -+ if (g_inet_address_equal (source_address, item_a->address)) -+ return -1; -+ if (g_inet_address_equal (source_address, item_b->address)) -+ return 1; -+ -+ /* Addresses are not equal, but preferences are: order is undefined */ -+ return 0; - } - - static XDMCPConnection * - choose_connection (XDMCPPacket *packet, GInetAddress *source_address) - { -- GInetAddress **addresses; - gsize addresses_length, i; -+ GArray *addresses; - gssize index = -1; -+ AddrSortItem addr; - - addresses_length = packet->Request.n_connections; - if (addresses_length == 0) - return NULL; - -- addresses = malloc (sizeof (GInetAddress *) * addresses_length); -- for (i = 0; i < addresses_length; i++) -- addresses[i] = connection_to_address (&packet->Request.connections[i]); -- -- /* Use the address the request came in on as this is the least likely to have firewall / routing issues */ -- for (i = 0; i < addresses_length && index < 0; i++) -- if (g_inet_address_equal (source_address, addresses[i])) -- index = i; -- -- /* Otherwise try and find an address that matches the incoming type */ -- if (index < 0) -- index = find_address (addresses, addresses_length, g_inet_address_get_family (source_address)); -- -- /* Otherwise use the first available */ -- if (index < 0) -- index = 0; -- -- for (i = 0; i < addresses_length; i++) -- g_object_unref (addresses[i]); -- g_free (addresses); -- -- return &packet->Request.connections[index]; -+ addresses = g_array_sized_new (FALSE, FALSE, sizeof addr, addresses_length); -+ if (!addresses) -+ return NULL; -+ -+ for (i = 0; i < addresses_length; i++) -+ { -+ addr.address = connection_to_address (&packet->Request.connections[i]); -+ if (addr.address) -+ { -+ addr.index = i; -+ g_array_append_val (addresses, addr); -+ } -+ } -+ -+ /* Sort the addresses according to our preferences */ -+ g_array_sort_with_data (addresses, compare_addresses, source_address); -+ -+ /* Use the best address */ -+ if (addresses->len) -+ index = g_array_index (addresses, AddrSortItem, 0).index; -+ -+ /* Free the local sort array and items */ -+ for (i = 0; i < addresses->len; i++) -+ g_object_unref (g_array_index (addresses, AddrSortItem, i).address); -+ g_object_unref (addresses); -+ -+ return index >= 0 ? &packet->Request.connections[index] : NULL; - } - - static gboolean - diff --git a/fix_invalid_object_defines.patch b/fix_invalid_object_defines.patch new file mode 100644 index 0000000..9271d62 --- /dev/null +++ b/fix_invalid_object_defines.patch @@ -0,0 +1,73 @@ +From 149d9d7dff76f1db1daac33031f5d2d0c5407443 Mon Sep 17 00:00:00 2001 +From: Robert Ancell +Date: Fri, 11 May 2018 16:24:39 +1200 +Subject: [PATCH] Fix invalid object defines + +--- + liblightdm-gobject/lightdm/language.h | 2 +- + liblightdm-gobject/lightdm/layout.h | 2 +- + liblightdm-gobject/lightdm/session.h | 2 +- + liblightdm-gobject/lightdm/user.h | 4 ++-- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/liblightdm-gobject/lightdm/language.h b/liblightdm-gobject/lightdm/language.h +index 9d45f0c4..c37a5dcf 100644 +--- a/liblightdm-gobject/lightdm/language.h ++++ b/liblightdm-gobject/lightdm/language.h +@@ -16,7 +16,7 @@ + G_BEGIN_DECLS + + #define LIGHTDM_TYPE_LANGUAGE (lightdm_language_get_type()) +-#define LIGHTDM_LANGUAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_LANGUAGE, LightDMLanguage)); ++#define LIGHTDM_LANGUAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_LANGUAGE, LightDMLanguage)) + #define LIGHTDM_LANGUAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LIGHTDM_TYPE_LANGUAGE, LightDMLanguageClass)) + #define LIGHTDM_IS_LANGUAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIGHTDM_TYPE_LANGUAGE)) + #define LIGHTDM_IS_LANGUAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LIGHTDM_TYPE_LANGUAGE)) +diff --git a/liblightdm-gobject/lightdm/layout.h b/liblightdm-gobject/lightdm/layout.h +index b36677d2..398ed641 100644 +--- a/liblightdm-gobject/lightdm/layout.h ++++ b/liblightdm-gobject/lightdm/layout.h +@@ -16,7 +16,7 @@ + G_BEGIN_DECLS + + #define LIGHTDM_TYPE_LAYOUT (lightdm_layout_get_type()) +-#define LIGHTDM_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_LAYOUT, LightDMLayout)); ++#define LIGHTDM_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_LAYOUT, LightDMLayout)) + #define LIGHTDM_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LIGHTDM_TYPE_LAYOUT, LightDMLayoutClass)) + #define LIGHTDM_IS_LAYOUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIGHTDM_TYPE_LAYOUT)) + #define LIGHTDM_IS_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LIGHTDM_TYPE_LAYOUT)) +diff --git a/liblightdm-gobject/lightdm/session.h b/liblightdm-gobject/lightdm/session.h +index 3cdeaef9..62e6fa8e 100644 +--- a/liblightdm-gobject/lightdm/session.h ++++ b/liblightdm-gobject/lightdm/session.h +@@ -16,7 +16,7 @@ + G_BEGIN_DECLS + + #define LIGHTDM_TYPE_SESSION (lightdm_session_get_type()) +-#define LIGHTDM_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_SESSION, LightDMSession)); ++#define LIGHTDM_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_SESSION, LightDMSession)) + #define LIGHTDM_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LIGHTDM_TYPE_SESSION, LightDMSessionClass)) + #define LIGHTDM_IS_SESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIGHTDM_TYPE_SESSION)) + #define LIGHTDM_IS_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LIGHTDM_TYPE_SESSION)) +diff --git a/liblightdm-gobject/lightdm/user.h b/liblightdm-gobject/lightdm/user.h +index 94b8af3a..27ecfdfa 100644 +--- a/liblightdm-gobject/lightdm/user.h ++++ b/liblightdm-gobject/lightdm/user.h +@@ -16,7 +16,7 @@ + G_BEGIN_DECLS + + #define LIGHTDM_TYPE_USER_LIST (lightdm_user_list_get_type()) +-#define LIGHTDM_USER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_USER_LIST, LightDMUserList)); ++#define LIGHTDM_USER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_USER_LIST, LightDMUserList)) + #define LIGHTDM_USER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LIGHTDM_TYPE_USER_LIST, LightDMUserListClass)) + #define LIGHTDM_IS_USER_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIGHTDM_TYPE_USER_LIST)) + #define LIGHTDM_IS_USER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LIGHTDM_TYPE_USER_LIST)) +@@ -26,7 +26,7 @@ typedef struct _LightDMUserList LightDMUserList; + typedef struct _LightDMUserListClass LightDMUserListClass; + + #define LIGHTDM_TYPE_USER (lightdm_user_get_type()) +-#define LIGHTDM_USER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_USER, LightDMUser)); ++#define LIGHTDM_USER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIGHTDM_TYPE_USER, LightDMUser)) + #define LIGHTDM_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LIGHTDM_TYPE_USER, LightDMUserClass)) + #define LIGHTDM_IS_USER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIGHTDM_TYPE_USER)) + #define LIGHTDM_IS_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LIGHTDM_TYPE_USER)) diff --git a/fix_unfreed_gerror.patch b/fix_unfreed_gerror.patch new file mode 100644 index 0000000..c647c56 --- /dev/null +++ b/fix_unfreed_gerror.patch @@ -0,0 +1,28 @@ +From 9cfe924bb7bdfbb293686f2d636f461017f7c9dc Mon Sep 17 00:00:00 2001 +From: Robert Ancell +Date: Fri, 11 May 2018 16:40:38 +1200 +Subject: [PATCH] Fix compile warning and unfreed GError from 733d175 + +--- + src/session-child.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/session-child.c b/src/session-child.c +index 468534cf..eef51e49 100644 +--- a/src/session-child.c ++++ b/src/session-child.c +@@ -765,12 +765,13 @@ session_child_run (int argc, char **argv) + privileges_drop (user_get_uid (user), user_get_gid (user)); + + g_autoptr(GError) error = NULL; +- gboolean result = x_authority_write (x_authority, XAUTH_WRITE_MODE_REMOVE, x_authority_filename, &error); ++ x_authority_write (x_authority, XAUTH_WRITE_MODE_REMOVE, x_authority_filename, &error); + if (drop_privileges) + privileges_reclaim (); + + if (error) + g_printerr ("Error removing X authority: %s\n", error->message); ++ g_clear_error (&error); + /* Ignore this error, don't exit, continue closing the session. */ + } + diff --git a/ignore_error_close_session.patch b/ignore_error_close_session.patch new file mode 100644 index 0000000..c71f6c6 --- /dev/null +++ b/ignore_error_close_session.patch @@ -0,0 +1,24 @@ +From 733d1758adc0003ebbdce31e6c6bb58b86816cbb Mon Sep 17 00:00:00 2001 +From: Ivan Zakharyaschev +Date: Fri, 23 Mar 2018 15:55:34 +0300 +Subject: [PATCH] in Remove X authority: Ignore any error & don't exit, + continue closing the session + +--- + src/session-child.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/session-child.c b/src/session-child.c +index 5d77c5a5..468534cf 100644 +--- a/src/session-child.c ++++ b/src/session-child.c +@@ -771,8 +771,7 @@ session_child_run (int argc, char **argv) + + if (error) + g_printerr ("Error removing X authority: %s\n", error->message); +- if (!result) +- _exit (EXIT_FAILURE); ++ /* Ignore this error, don't exit, continue closing the session. */ + } + + /* Close the Console Kit session */ diff --git a/lightdm.spec b/lightdm.spec index e1d060b..76996b5 100644 --- a/lightdm.spec +++ b/lightdm.spec @@ -6,7 +6,7 @@ Name: lightdm Summary: A cross-desktop Display Manager -Version: 1.25.2 +Version: 1.26.0 Release: 1%{?dist} # library/bindings are LGPLv2 or LGPLv3, the rest GPLv3+ @@ -33,6 +33,12 @@ Source25: 50-disable-guest.conf Patch0: %{giturl}/pull/3.patch#/%{name}-1.25.1-fix_transition_plymouth.patch Patch1: %{giturl}/pull/5.patch#/%{name}-1.25.1-disable_dmrc.patch +# Upstream commits + +Patch2: %{giturl}/commit/733d1758adc0003ebbdce31e6c6bb58b86816cbb.patch#/ignore_error_close_session.patch +Patch3: %{giturl}/commit/9cfe924bb7bdfbb293686f2d636f461017f7c9dc.patch#/fix_unfreed_gerror.patch +Patch4: %{giturl}/commit/149d9d7dff76f1db1daac33031f5d2d0c5407443.patch#/fix_invalid_object_defines.patch + BuildRequires: gettext BuildRequires: gnome-common BuildRequires: gtk-doc itstool @@ -318,6 +324,10 @@ fi %changelog +* Sun May 27 2018 Leigh Scott - 1.26.0-1 +- lightdm-1.26.0 +- Add upstream commits, maybe fix rhbz#1581495 + * Fri Feb 23 2018 Leigh Scott - 1.25.2-1 - lightdm-1.25.2 - Fix scriptlets diff --git a/sources b/sources index a9790ae..7b5dec3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (lightdm-1.25.2.tar.gz) = 88941cddc362c95a25ad4a7d5b2ab8b4a379354dedd682d5387671a839f5cfec77bc0f5a8038bda1c8aea281f3239adb8d8c7044a7e279c9ac0755cc1275e570 +SHA512 (lightdm-1.26.0.tar.gz) = 2e2a5e0e5d634665932b3c4f49d02b1868595793f3d9ac0860b330536f4ffa75d8983fecaf265a64bfd61e1d945a20e2631a4b7a49c84bcafc5cc1efcc041fa7