head 1.2; access; symbols pkgsrc-2013Q2:1.2.0.8 pkgsrc-2013Q2-base:1.2 pkgsrc-2012Q4:1.2.0.6 pkgsrc-2012Q4-base:1.2 pkgsrc-2011Q4:1.2.0.4 pkgsrc-2011Q4-base:1.2 pkgsrc-2011Q2:1.2.0.2 pkgsrc-2011Q2-base:1.2 pkgsrc-2009Q4:1.1.0.2 pkgsrc-2009Q4-base:1.1; locks; strict; comment @# @; 1.2 date 2010.02.11.18.02.39; author drochner; state dead; branches; next 1.1; 1.1 date 2009.11.18.08.12.12; author wiz; state Exp; branches; next ; desc @@ 1.2 log @-install the autostart file correctly so that the thing actually starts up (the mechanism changed in 2.28) -update to 2.28.2 changes: -bugfixes -fix a possible authentication bypass (CVE-2010-0414) -- I don't think we are affected because this depends on dynamic monitor addition/removal @ text @$NetBSD: patch-ad,v 1.1 2009/11/18 08:12:12 wiz Exp $ https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/446395 http://patches.ubuntu.com/g/gnome-screensaver/extracted/08_gs_dialog_request_to_exit.patch --- src/gs-window-x11.c.orig 2009-08-19 23:19:14.000000000 +0000 +++ src/gs-window-x11.c @@@@ -91,6 +91,8 @@@@ struct GSWindowPrivate gint lock_pid; gint lock_watch_id; gint dialog_response; + gboolean dialog_quit_requested; + gboolean dialog_shake_in_progress; gint keyboard_pid; gint keyboard_watch_id; @@@@ -1383,6 +1385,16 @@@@ gs_window_dialog_finish (GSWindow *windo remove_key_events (window); } +static void +maybe_kill_dialog (GSWindow *window) +{ + if (!window->priv->dialog_shake_in_progress + && window->priv->dialog_quit_requested + && window->priv->lock_pid > 0) { + kill (window->priv->lock_pid, SIGTERM); + } +} + /* very rudimentary animation for indicating an auth failure */ static void shake_dialog (GSWindow *window) @@@@ -1391,6 +1403,8 @@@@ shake_dialog (GSWindow *window) guint left; guint right; + window->priv->dialog_shake_in_progress = TRUE; + for (i = 0; i < 9; i++) { if (i % 2 == 0) { left = 30; @@@@ -1415,6 +1429,9 @@@@ shake_dialog (GSWindow *window) g_usleep (10000); } + + window->priv->dialog_shake_in_progress = FALSE; + maybe_kill_dialog (window); } static gboolean @@@@ -1457,6 +1474,10 @@@@ lock_command_watch (GIOChannel *source window->priv->dialog_response = DIALOG_RESPONSE_CANCEL; } finished = TRUE; + } else if (strstr (line, "REQUEST QUIT") != NULL) { + gs_debug ("Got request for quit"); + window->priv->dialog_quit_requested = TRUE; + maybe_kill_dialog (window); } break; case G_IO_STATUS_EOF: @@@@ -1570,6 +1591,9 @@@@ popup_dialog_idle (GSWindow *window) set_invisible_cursor (GTK_WIDGET (window)->window, FALSE); + window->priv->dialog_quit_requested = FALSE; + window->priv->dialog_shake_in_progress = FALSE; + result = spawn_on_window (window, command->str, &window->priv->lock_pid, @ 1.1 log @Fix crash using Ubuntu patch. Description: https://bugs.launchpad.net/ubuntu/+source/gnome-screensaver/+bug/446395 Solution: http://patches.ubuntu.com/g/gnome-screensaver/extracted/08_gs_dialog_request_to_exit.patch Reported by David H. Gutteridge in PR 42338. @ text @d1 1 a1 1 $NetBSD$ @