From: Matthias Clasen Date: Thu, 11 May 2023 22:33:23 +0000 (-0400) Subject: urilauncher: Validate the uri X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~3^2~1^2~53 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=b88b4919bed8ae442d76db0ae3cbbfb5f2ff22ba;p=gtk4.git urilauncher: Validate the uri We don't want to send nonsense to the portal. Fixes: #5829 --- diff --git a/gtk/gtkurilauncher.c b/gtk/gtkurilauncher.c index bf6e2e260b..7410a8da2a 100644 --- a/gtk/gtkurilauncher.c +++ b/gtk/gtkurilauncher.c @@ -277,13 +277,14 @@ G_GNUC_END_IGNORE_DEPRECATIONS * Since: 4.10 */ void -gtk_uri_launcher_launch (GtkUriLauncher *self, - GtkWindow *parent, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +gtk_uri_launcher_launch (GtkUriLauncher *self, + GtkWindow *parent, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { GTask *task; + GError *error = NULL; g_return_if_fail (GTK_IS_URI_LAUNCHER (self)); @@ -299,6 +300,15 @@ gtk_uri_launcher_launch (GtkUriLauncher *self, return; } + if (!g_uri_is_valid (self->uri, G_URI_FLAGS_NONE, &error)) + { + g_task_return_new_error (task, + GTK_DIALOG_ERROR, GTK_DIALOG_ERROR_FAILED, + "%s is not a valid uri: %s", self->uri, error->message); + g_error_free (error); + return; + } + #ifndef G_OS_WIN32 if (gtk_openuri_portal_is_available ()) gtk_openuri_portal_open_uri_async (self->uri, parent, cancellable, open_done, task); @@ -325,8 +335,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS */ gboolean gtk_uri_launcher_launch_finish (GtkUriLauncher *self, - GAsyncResult *result, - GError **error) + GAsyncResult *result, + GError **error) { g_return_val_if_fail (GTK_IS_URI_LAUNCHER (self), FALSE); g_return_val_if_fail (g_task_is_valid (result, self), FALSE);