From: Rui Matos Date: Mon, 10 Nov 2014 14:06:52 +0000 (+0100) Subject: sharing: Prevent an endless loop and resulting stack overflow X-Git-Tag: archive/raspbian/1%3.26.1-2+rpi1~1^2^2^2^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=46030159b8ba282b5df74deca6c36a77b4f46a85;p=gnome-control-center.git sharing: Prevent an endless loop and resulting stack overflow We need to block ourselves around the gtk_switch_set_active() call in the error path, when we can't speak to the sharing dbus service, or we end up in an endless loop since we're the ::state-set handler. https://bugzilla.gnome.org/show_bug.cgi?id=739886 Gbp-Pq: Name 30_stack_overflow.patch --- diff --git a/panels/sharing/cc-sharing-networks.c b/panels/sharing/cc-sharing-networks.c index 181ed99..10920de 100644 --- a/panels/sharing/cc-sharing-networks.c +++ b/panels/sharing/cc-sharing-networks.c @@ -190,7 +190,11 @@ cc_sharing_networks_enable_network (GtkSwitch *widget, g_warning ("Failed to %s service %s: %s", state ? "enable" : "disable", self->priv->service_name, error->message); g_error_free (error); + g_signal_handlers_block_by_func (widget, + cc_sharing_networks_enable_network, self); gtk_switch_set_active (widget, !state); + g_signal_handlers_unblock_by_func (widget, + cc_sharing_networks_enable_network, self); } cc_sharing_update_networks (self);