Control: tags -1 patch
I confirm that this patch fixes the problem.
Berto
diff -Nru gnome-calendar-43.1/debian/changelog gnome-calendar-43.1/debian/changelog
--- gnome-calendar-43.1/debian/changelog 2022-10-18 16:09:27.0 +0200
+++ gnome-calendar-43.1/debian/changelog 2023-03-20 18:25:22.0 +0100
@@ -1,3 +1,10 @@
+gnome-calendar (43.1-2) unstable; urgency=high
+
+ * debian/patches/validate-uri.patch:
+- Fix crash when adding an url manually (Closes: #1033239)
+
+ -- Alberto Garcia Mon, 20 Mar 2023 18:25:22 +0100
+
gnome-calendar (43.1-1) unstable; urgency=high
* New upstream release (LP: #1993308)
diff -Nru gnome-calendar-43.1/debian/patches/series gnome-calendar-43.1/debian/patches/series
--- gnome-calendar-43.1/debian/patches/series 2022-10-18 16:09:27.0 +0200
+++ gnome-calendar-43.1/debian/patches/series 2023-03-20 18:16:08.0 +0100
@@ -0,0 +1 @@
+validate-uri.patch
diff -Nru gnome-calendar-43.1/debian/patches/validate-uri.patch gnome-calendar-43.1/debian/patches/validate-uri.patch
--- gnome-calendar-43.1/debian/patches/validate-uri.patch 1970-01-01 01:00:00.0 +0100
+++ gnome-calendar-43.1/debian/patches/validate-uri.patch 2023-03-20 18:25:22.0 +0100
@@ -0,0 +1,121 @@
+From: Georges Basile Stavracas Neto
+Subject: Test URI before discovery
+Bug: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/794
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1033239
+Origin: https://gitlab.gnome.org/GNOME/gnome-calendar/-/commit/0322bcf54cf1fc37ff74b87fd36e282dc1cf7863
+Index: gnome-calendar-43.1/src/utils/gcal-source-discoverer.c
+===
+--- gnome-calendar-43.1.orig/src/utils/gcal-source-discoverer.c
gnome-calendar-43.1/src/utils/gcal-source-discoverer.c
+@@ -183,6 +183,26 @@ is_authentication_error (gint code)
+ return FALSE;
+ }
+
++static GUri *
++create_and_validate_uri (const gchar *uri,
++ GError **error)
++{
++ g_autoptr (GUri) guri = NULL;
++
++ guri = g_uri_parse (uri, SOUP_HTTP_URI_FLAGS | G_URI_FLAGS_PARSE_RELAXED, error);
++
++ if (!guri)
++GCAL_RETURN (NULL);
++
++ if (!g_uri_get_host (guri) || g_uri_get_host (guri)[0] == '\0')
++{
++ g_set_error (error, G_URI_ERROR, G_URI_ERROR_FAILED, "Invalid URI");
++ return NULL;
++}
++
++ return g_steal_pointer ();
++}
++
+
+ /*
+ * Callbacks
+@@ -221,7 +241,7 @@ discover_file_in_thread (DiscovererData
+
+ GCAL_ENTRY;
+
+- guri = g_uri_parse (data->uri, SOUP_HTTP_URI_FLAGS | G_URI_FLAGS_PARSE_RELAXED, NULL);
++ guri = create_and_validate_uri (data->uri, error);
+
+ if (!guri)
+ GCAL_RETURN (NULL);
+@@ -277,6 +297,7 @@ discover_webdav_in_thread (DiscovererDat
+ g_autoptr (ESource) source = NULL;
+ g_autoptr (GError) local_error = NULL;
+ g_autofree gchar *certificate_pem = NULL;
++ g_autoptr (GUri) guri = NULL;
+ GTlsCertificateFlags flags;
+ GSList *discovered_sources = NULL;
+ GSList *user_addresses = NULL;
+@@ -284,6 +305,11 @@ discover_webdav_in_thread (DiscovererDat
+
+ GCAL_ENTRY;
+
++ guri = create_and_validate_uri (data->uri, error);
++
++ if (!guri)
++GCAL_RETURN (NULL);
++
+ credentials = e_named_parameters_new ();
+ e_named_parameters_set (credentials, E_SOURCE_CREDENTIAL_USERNAME, data->username);
+ e_named_parameters_set (credentials, E_SOURCE_CREDENTIAL_PASSWORD, data->password);
+Index: gnome-calendar-43.1/tests/test-discoverer.c
+===
+--- gnome-calendar-43.1.orig/tests/test-discoverer.c
gnome-calendar-43.1/tests/test-discoverer.c
+@@ -82,6 +82,43 @@ discoverer_file (void)
+
+ /*/
+
++static void
++discoverer_invalid_https_only_cb (GObject *source_object,
++ GAsyncResult *result,
++ gpointer user_data)
++{
++ g_autoptr (GPtrArray) sources = NULL;
++ g_autoptr (GError) error = NULL;
++ GMainLoop *mainloop = user_data;
++
++ sources = gcal_discover_sources_from_uri_finish (result, );
++ g_assert_error (error, G_URI_ERROR, G_URI_ERROR_FAILED);
++ g_assert_null (sources);
++
++ g_main_loop_quit (mainloop);
++}
++
++static void
++discoverer_invalid_https_only (void)
++{
++ g_autoptr (GMainLoop) mainloop = NULL;
++
++ g_test_bug ("794");
++
++ mainloop = g_main_loop_new (NULL, FALSE);
++
++ gcal_discover_sources_from_uri ("https://;,
++ NULL,
++ NULL,
++ NULL,
++ discoverer_invalid_https_only_cb,
++ mainloop);
++
++ g_main_loop_run (mainloop);
++}
++
++/*/
++
+