From 13380e3af645c5597e22cc8e35d23acf3c7b4695 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Thu, 19 Apr 2007 14:53:19 +0000 Subject: Check whether uri is valid before launching it. Fixes bug #427664. 2007-04-19 Carlos Garcia Campos * shell/ev-window.c: (uri_is_valid), (launch_external_uri): Check whether uri is valid before launching it. Fixes bug #427664. svn path=/trunk/; revision=2409 --- diff --git a/ChangeLog b/ChangeLog index d27afef..9198d0d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2007-04-19 Carlos Garcia Campos + * shell/ev-window.c: (uri_is_valid), (launch_external_uri): + + Check whether uri is valid before launching it. Fixes bug #427664. + +2007-04-19 Carlos Garcia Campos + * shell/ev-window.c: Change key accelerator for Open a Copy menu entry which is in conflict diff --git a/shell/ev-window.c b/shell/ev-window.c index 7863c28..4d76b6f 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -4516,10 +4516,45 @@ launch_action (EvWindow *window, EvLinkAction *action) allowing to launch executables is a good idea though. -- marco */ } +static gboolean +uri_is_valid (const gchar *uri) +{ + gchar *p = (gchar *) uri; + + if (!p || !g_ascii_isalpha (*p)) + return FALSE; + + p++; + while (g_ascii_isalnum (*p)) + p++; + + return (g_ascii_strncasecmp (p, "://", strlen ("://")) == 0); +} + static void launch_external_uri (EvWindow *window, EvLinkAction *action) { - gnome_vfs_url_show (ev_link_action_get_uri (action)); + const gchar *uri = ev_link_action_get_uri (action); + + if (!uri_is_valid (uri)) { + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (GTK_WINDOW (window), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + _("Unable to open external link")); + gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), + _("Invalid URI: ā€œ%sā€"), uri); + g_signal_connect (dialog, "response", + G_CALLBACK (gtk_widget_destroy), + NULL); + gtk_widget_show (dialog); + + return; + } + + gnome_vfs_url_show (uri); } static void -- cgit v0.9.1