From adc7f6d78ac2c6b6b3f9d1eb51412a8343e51a2e14794ae8414880ad240c9c6f Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Fri, 5 Dec 2008 14:24:11 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdm?expand=0&rev=70 --- gdm-domain-logon.patch | 113 ++++++++++++++++++++++++++++++----------- gdm.changes | 8 ++- gdm.spec | 5 +- 3 files changed, 93 insertions(+), 33 deletions(-) diff --git a/gdm-domain-logon.patch b/gdm-domain-logon.patch index b2054bc..27d759e 100644 --- a/gdm-domain-logon.patch +++ b/gdm-domain-logon.patch @@ -665,7 +665,7 @@ index 0000000..4ba9d18 +#endif /* __GDM_DOMAIN_CHOOSER_WIDGET_H */ diff --git a/gui/simple-greeter/gdm-domain-option-widget.c b/gui/simple-greeter/gdm-domain-option-widget.c new file mode 100644 -index 0000000..93eb5f5 +index 0000000..31e76e2 --- /dev/null +++ b/gui/simple-greeter/gdm-domain-option-widget.c @@ -0,0 +1,379 @@ @@ -968,7 +968,7 @@ index 0000000..93eb5f5 + + gdm_recent_option_widget_set_gconf_key (GDM_RECENT_OPTION_WIDGET (domain_option_widget), + "/apps/gdm/simple-greeter/recent-domains", -+ gdm_domain_option_widget_lookup_item, ++ (GdmRecentOptionLookupItemFunc) gdm_domain_option_widget_lookup_item, + &error); + + if (error != NULL) { @@ -1115,10 +1115,10 @@ index 0000000..4913ede +#endif /* __GDM_DOMAIN_OPTION_WIDGET_H */ diff --git a/gui/simple-greeter/gdm-domain-provider.c b/gui/simple-greeter/gdm-domain-provider.c new file mode 100644 -index 0000000..2bd9189 +index 0000000..2924291 --- /dev/null +++ b/gui/simple-greeter/gdm-domain-provider.c -@@ -0,0 +1,478 @@ +@@ -0,0 +1,536 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Hans Petter Jansson @@ -1167,9 +1167,10 @@ index 0000000..2bd9189 + +typedef enum +{ -+ STATE_IDLE, -+ STATE_QUERY_SEPARATOR, -+ STATE_QUERY_DOMAINS ++ STATE_IDLE, /* Next state: STATE_QUERY_SEPARATOR */ ++ STATE_QUERY_SEPARATOR, /* Next state: STATE_QUERY_OWN_DOMAIN or STATE_IDLE */ ++ STATE_QUERY_OWN_DOMAIN, /* Next state: STATE_QUERY_TRUSTED_DOMAINS or STATE_IDLE */ ++ STATE_QUERY_TRUSTED_DOMAINS, /* Next state: STATE_IDLE */ +} +State; + @@ -1194,6 +1195,8 @@ index 0000000..2bd9189 + GPid cmd_pid; + CmdEndFunc cmd_end_func; + ++ gchar *domains_output; ++ + guint callback_id; +}; + @@ -1383,6 +1386,9 @@ index 0000000..2bd9189 +{ + GdmDomainProviderPrivate *priv = domain_provider->priv; + ++ g_free (priv->domains_output); ++ priv->domains_output = NULL; ++ + if (priv->something_changed) { + /* Emit changed signal */ + @@ -1395,7 +1401,7 @@ index 0000000..2bd9189 +} + +static void -+get_domains_end (GdmDomainProvider *domain_provider, gchar *output, gint status) ++get_trusted_domains_end (GdmDomainProvider *domain_provider, gchar *output, gint status) +{ + GdmDomainProviderPrivate *priv = domain_provider->priv; + GList *domains = NULL; @@ -1405,6 +1411,11 @@ index 0000000..2bd9189 + gchar **tokens; + gint i; + ++ if (priv->domains_output) { ++ output = g_realloc (output, strlen (output) + strlen (priv->domains_output) + 1); ++ strcat (output, priv->domains_output); ++ } ++ + tokens = g_strsplit_set (output, "\n\r", N_DOMAINS_MAX); + + g_qsort_with_data (tokens, @@ -1418,6 +1429,18 @@ index 0000000..2bd9189 + if (!strlen (tokens [i])) + continue; + ++ /* Ensure no duplicates */ ++ if (i > 0 && !g_ascii_strcasecmp (tokens [i], tokens [i - 1])) ++ continue; ++ ++ /* Ensure no builtin */ ++ if (!g_ascii_strcasecmp (tokens [i], "BUILTIN")) ++ continue; ++ ++ /* Ensure no local host name */ ++ if (!g_ascii_strcasecmp (tokens [i], g_get_host_name ())) ++ continue; ++ + domains = g_list_prepend (domains, tokens [i]); + } + @@ -1426,6 +1449,8 @@ index 0000000..2bd9189 + domains = g_list_reverse (domains); + } + ++ g_free (output); ++ + old_domains = priv->domains; + priv->domains = domains; + @@ -1441,13 +1466,38 @@ index 0000000..2bd9189 +} + +static void -+get_domains_begin (GdmDomainProvider *domain_provider) ++get_trusted_domains_begin (GdmDomainProvider *domain_provider) +{ + GdmDomainProviderPrivate *priv = domain_provider->priv; -+ const gchar * const cmd_args [] = { "wbinfo", "--all-domains", NULL }; ++ const gchar * const cmd_args [] = { "wbinfo", "--trusted-domains", NULL }; + -+ if (async_spawn_and_read (domain_provider, cmd_args, get_domains_end)) -+ priv->state = STATE_QUERY_DOMAINS; ++ if (async_spawn_and_read (domain_provider, cmd_args, get_trusted_domains_end)) ++ priv->state = STATE_QUERY_TRUSTED_DOMAINS; ++ else ++ idle_begin (domain_provider); ++} ++ ++static void ++get_own_domain_end (GdmDomainProvider *domain_provider, gchar *output, gint status) ++{ ++ GdmDomainProviderPrivate *priv = domain_provider->priv; ++ ++ if (status == 0 && output != NULL && *output) ++ priv->domains_output = output; ++ ++ /* Next state */ ++ ++ get_trusted_domains_begin (domain_provider); ++} ++ ++static void ++get_own_domain_begin (GdmDomainProvider *domain_provider) ++{ ++ GdmDomainProviderPrivate *priv = domain_provider->priv; ++ const gchar * const cmd_args [] = { "wbinfo", "--own-domain", NULL }; ++ ++ if (async_spawn_and_read (domain_provider, cmd_args, get_own_domain_end)) ++ priv->state = STATE_QUERY_OWN_DOMAIN; + else + idle_begin (domain_provider); +} @@ -1460,15 +1510,18 @@ index 0000000..2bd9189 + gchar *old_separator; + + if (status == 0 && output != NULL) { -+ gchar *p0; ++ gchar *p0, *p1; + + p0 = strchr (output, '\n'); -+ if (!p0) -+ p0 = strchr (output, '\r'); ++ p1 = strchr (output, '\r'); ++ if (!p0 || (p1 && p1 < p0)) ++ p0 = p1; + + if (p0 && p0 != output) { + *p0 = 0; -+ separator = g_strdup (output); ++ separator = output; ++ } else { ++ g_free (output); + } + } + @@ -1483,7 +1536,7 @@ index 0000000..2bd9189 + /* Next state */ + + if (priv->separator) -+ get_domains_begin (domain_provider); ++ get_own_domain_begin (domain_provider); + else + idle_begin (domain_provider); +} @@ -1536,16 +1589,21 @@ index 0000000..2bd9189 +static void +gdm_domain_provider_finalize (GObject *object) +{ -+ GdmDomainProvider *domain_provider; ++ GdmDomainProvider *domain_provider; ++ GdmDomainProviderPrivate *priv; + + g_return_if_fail (object != NULL); + g_return_if_fail (GDM_IS_DOMAIN_PROVIDER (object)); + + domain_provider = GDM_DOMAIN_PROVIDER (object); ++ priv = domain_provider->priv; + + /* Stop the state machine */ + cmd_cleanup (domain_provider, NULL); + ++ g_free (priv->domains_output); ++ priv->domains_output = NULL; ++ + G_OBJECT_CLASS (gdm_domain_provider_parent_class)->finalize (object); +} + @@ -1836,7 +1894,7 @@ index 07cca3f..6079569 100644 #endif /* __GDM_GREETER_PANEL_H */ diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c -index 83375b2..fe85746 100644 +index 83375b2..251e7c8 100644 --- a/gui/simple-greeter/gdm-greeter-session.c +++ b/gui/simple-greeter/gdm-greeter-session.c @@ -38,6 +38,8 @@ @@ -1954,7 +2012,7 @@ index 83375b2..fe85746 100644 } static void -@@ -236,13 +296,46 @@ on_select_layout (GdmGreeterSession *session, +@@ -236,13 +296,39 @@ on_select_layout (GdmGreeterSession *session, } static void @@ -1968,13 +2026,6 @@ index 83375b2..fe85746 100644 + + if (text && strcmp (text, "__local") && strcmp (text, "__other")) + session->priv->domain = g_strdup (text); -+ -+ domain_and_user = maybe_prepend_domain_to_user (session, session->priv->user); -+ -+ gdm_greeter_client_call_select_user (session->priv->client, -+ domain_and_user); -+ -+ g_free (domain_and_user); +} + +static void @@ -2002,7 +2053,7 @@ index 83375b2..fe85746 100644 } static void -@@ -251,6 +344,10 @@ on_cancelled (GdmGreeterLoginWindow *login_window, +@@ -251,6 +337,10 @@ on_cancelled (GdmGreeterLoginWindow *login_window, { gdm_greeter_panel_hide_user_options (GDM_GREETER_PANEL (session->priv->panel)); gdm_greeter_client_call_cancel (session->priv->client); @@ -2013,7 +2064,7 @@ index 83375b2..fe85746 100644 } static void -@@ -300,6 +397,11 @@ toggle_panel (GdmGreeterSession *session, +@@ -300,6 +390,11 @@ toggle_panel (GdmGreeterSession *session, G_CALLBACK (on_select_session), session); @@ -2025,7 +2076,7 @@ index 83375b2..fe85746 100644 gtk_widget_show (session->priv->panel); } else { gtk_widget_destroy (session->priv->panel); -@@ -542,6 +644,8 @@ gdm_greeter_session_init (GdmGreeterSession *session) +@@ -542,6 +637,8 @@ gdm_greeter_session_init (GdmGreeterSession *session) G_CALLBACK (on_user_authorized), session); @@ -2034,7 +2085,7 @@ index 83375b2..fe85746 100644 /* We want to listen for panel mnemonics even if the * login window is focused, so we intercept them here. */ -@@ -563,6 +667,9 @@ gdm_greeter_session_finalize (GObject *object) +@@ -563,6 +660,9 @@ gdm_greeter_session_finalize (GObject *object) g_return_if_fail (greeter_session->priv != NULL); diff --git a/gdm.changes b/gdm.changes index 98880e1..03c6a9d 100644 --- a/gdm.changes +++ b/gdm.changes @@ -1,5 +1,11 @@ ------------------------------------------------------------------- -Thu Dec 4 01:26:30 CST 2008 - hpj@novell.com +Thu Dec 4 23:47:59 CST 2008 - hpj@novell.com + +- Update gdm-domain-logon.patch to omit undesirable domains + (bnc#450143). + +------------------------------------------------------------------- +Thu Dec 3 01:26:30 CST 2008 - hpj@novell.com - Replace gdm-2.21.5-vt7-temporary-hack.patch with gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm diff --git a/gdm.spec b/gdm.spec index 939bc65..fdc0d1f 100644 --- a/gdm.spec +++ b/gdm.spec @@ -57,7 +57,7 @@ PreReq: %insserv_prereq License: GPL v2 or later Group: System/GUI/GNOME Version: 2.24.0 -Release: 14 +Release: 15 Summary: The GNOME 2.x Display Manager Source: %{name}-%{version}.tar.bz2 Source1: gdm.pamd @@ -287,6 +287,9 @@ fi %changelog * Thu Dec 04 2008 hpj@novell.com +- Update gdm-domain-logon.patch to omit undesirable domains + (bnc#450143). +* Wed Dec 03 2008 hpj@novell.com - Replace gdm-2.21.5-vt7-temporary-hack.patch with gdm-vt-allocation-hack.patch. The new patch doesn't hardcode gdm to VT7, but instead scans for a free VT starting with VT7