Commit 82c367 added checks that the value passed to --disable-effects is valid, but it does not take into account that it's perfectly valid to pass multiple values separated by commas. This commit splits the value passed to --disable-effects and checks each component separatey. Fixes rhbz#955277 --- gtk/spice-option.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/gtk/spice-option.c b/gtk/spice-option.c index 4bda520..5f7c803 100644 --- a/gtk/spice-option.c +++ b/gtk/spice-option.c @@ -27,7 +27,7 @@ #include "spice-channel-priv.h" #include "usb-device-manager.h" -static gchar *disable_effects = NULL; +static GStrv disable_effects = NULL; static gint color_depth = 0; static char *ca_file = NULL; static char *host_subject = NULL; @@ -85,22 +85,26 @@ error: static gboolean parse_disable_effects(const gchar *option_name, const gchar *value, gpointer data, GError **error) { - - if ((g_strcmp0(value, "wallpaper") != 0) - && (g_strcmp0(value, "font-smooth") != 0) - && (g_strcmp0(value, "animation") != 0) - && (g_strcmp0(value, "all") != 0)) { - /* Translators: do not translate 'wallpaper', 'font-smooth', - * 'animation', 'all' as the user must use these values with the - * --spice-disable-effects command line option - */ - g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, - _("invalid effect name (%s), must be 'wallpaper', 'font-smooth', 'animation' or 'all'"), value); - return FALSE; + GStrv it; + + disable_effects = g_strsplit(value, ",", -1); + for (it = disable_effects; *it != NULL; it++) { + if ((g_strcmp0(*it, "wallpaper") != 0) + && (g_strcmp0(*it, "font-smooth") != 0) + && (g_strcmp0(*it, "animation") != 0) + && (g_strcmp0(*it, "all") != 0)) { + /* Translators: do not translate 'wallpaper', 'font-smooth', + * 'animation', 'all' as the user must use these values with the + * --spice-disable-effects command line option + */ + g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, + _("invalid effect name (%s), must be 'wallpaper', 'font-smooth', 'animation' or 'all'"), *it); + g_strfreev(disable_effects); + disable_effects = NULL; + return FALSE; + } } - disable_effects = g_strdup(value); - return TRUE; } @@ -222,11 +226,7 @@ void spice_set_session_option(SpiceSession *session) } if (disable_effects) { - GStrv effects; - effects = g_strsplit(disable_effects, ",", -1); - if (effects) - g_object_set(session, "disable-effects", effects, NULL); - g_strfreev(effects); + g_object_set(session, "disable-effects", disable_effects, NULL); } if (secure_channels) { -- 1.8.1.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel