diff --git a/269.patch b/269.patch new file mode 100644 index 0000000000000000000000000000000000000000..de9e844876b938481c37855a4a33c5e70207d69f --- /dev/null +++ b/269.patch @@ -0,0 +1,41 @@ +From 21e5396bf5d6fe6101bb1c773632e8722fe2f3bb Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Mon, 31 Oct 2022 10:57:40 +0100 +Subject: [PATCH] event-editor: Fix possible use-after-free of recurrence until + date + +The GcalDateSelector returns an internal instance, while the 'until' date/time +is meant to be an own instance, which is freed by the GcalRecurrence instance +in its free function. That means the 'until' date/time is supposed to be reffed +when being assigned into the GcalRecurrence structure. + +Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/892 +--- + src/gui/event-editor/gcal-schedule-section.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/gui/event-editor/gcal-schedule-section.c b/src/gui/event-editor/gcal-schedule-section.c +index 2aed8e30..6a051909 100644 +--- a/src/gui/event-editor/gcal-schedule-section.c ++++ b/src/gui/event-editor/gcal-schedule-section.c +@@ -616,7 +616,7 @@ gcal_schedule_section_apply (GcalEventEditorSection *section) + recur->limit_type = gtk_combo_box_get_active (GTK_COMBO_BOX (self->repeat_duration_combo)); + + if (recur->limit_type == GCAL_RECURRENCE_UNTIL) +- recur->limit.until = gcal_date_selector_get_date (GCAL_DATE_SELECTOR (self->until_date_selector)); ++ recur->limit.until = g_date_time_ref (gcal_date_selector_get_date (GCAL_DATE_SELECTOR (self->until_date_selector))); + else if (recur->limit_type == GCAL_RECURRENCE_COUNT) + recur->limit.count = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (self->number_of_occurrences_spin)); + +@@ -821,7 +821,7 @@ gcal_schedule_section_recurrence_changed (GcalScheduleSection *self) + recurrence->frequency = gtk_combo_box_get_active (GTK_COMBO_BOX (self->repeat_combo)); + recurrence->limit_type = gtk_combo_box_get_active (GTK_COMBO_BOX (self->repeat_duration_combo)); + if (recurrence->limit_type == GCAL_RECURRENCE_UNTIL) +- recurrence->limit.until = gcal_date_selector_get_date (GCAL_DATE_SELECTOR (self->until_date_selector)); ++ recurrence->limit.until = g_date_time_ref (gcal_date_selector_get_date (GCAL_DATE_SELECTOR (self->until_date_selector))); + else if (recurrence->limit_type == GCAL_RECURRENCE_COUNT) + recurrence->limit.count = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (self->number_of_occurrences_spin)); + +-- +GitLab + diff --git a/270.patch b/270.patch new file mode 100644 index 0000000000000000000000000000000000000000..92bcebd7ca053577d5484b3ea85cef2aafad49b9 --- /dev/null +++ b/270.patch @@ -0,0 +1,34 @@ +From 36623c8339256d706187f694ee45a73e3997daae Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Wed, 2 Nov 2022 09:01:11 +0100 +Subject: [PATCH] gcal-recurrence: Handle invalid 'until' time + +When the until's time part is invalid, the libical claims the time +as valid, but the conversion into the GDateTime fails and returns NULL. +Such events, which claim to have until-date recurrence, but NULL 'until' +cannot be edited, because they cause a crash of the application. + +More information can be found downstream at: +https://bugzilla.redhat.com/show_bug.cgi?id=2135772 + +Related to https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/892 +--- + src/core/gcal-recurrence.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/core/gcal-recurrence.c b/src/core/gcal-recurrence.c +index 91a152c5..3d271036 100644 +--- a/src/core/gcal-recurrence.c ++++ b/src/core/gcal-recurrence.c +@@ -229,6 +229,8 @@ gcal_recurrence_parse_recurrence_rules (ECalComponent *comp) + { + recur->limit_type = GCAL_RECURRENCE_UNTIL; + recur->limit.until = gcal_date_time_from_icaltime (until); ++ if (!recur->limit.until) ++ recur->limit_type = GCAL_RECURRENCE_FOREVER; + } + else + { +-- +GitLab + diff --git a/gnome-calendar-42.2.tar.xz b/gnome-calendar-42.2.tar.xz deleted file mode 100644 index f1495b69c9cb00694d12e030cf40e03308396fcf..0000000000000000000000000000000000000000 Binary files a/gnome-calendar-42.2.tar.xz and /dev/null differ diff --git a/gnome-calendar-43.1.tar.xz b/gnome-calendar-43.1.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..422583d4ad148319c5f962222fa290721fdb2ca9 Binary files /dev/null and b/gnome-calendar-43.1.tar.xz differ diff --git a/gnome-calendar.spec b/gnome-calendar.spec index a8ba176e7829530b90d6955230bd50b6a7443f8d..8197ad9fb625f2a6c6bc5e306b8eadc46dcb247b 100644 --- a/gnome-calendar.spec +++ b/gnome-calendar.spec @@ -1,16 +1,22 @@ %global libical_version 3.0.5 %global gsettings_desktop_schemas_version 3.21.2 -%global edataserver_version 3.33.2 +%global edataserver_version 3.45.1 %global glib2_version 2.67.5 %global gtk4_version 4.6.0 Name: gnome-calendar -Version: 42.2 +Version: 43.1 Release: 1 Summary: A simple and beautiful calendar application for GNOME. License: GPLv3+ URL: https://wiki.gnome.org/Apps/Calendar -Source0: https://download.gnome.org/sources/%{name}/42/%{name}-%{version}.tar.xz +Source0: https://download.gnome.org/sources/%{name}/43/%{name}-%{version}.tar.xz + +# Backported from upstream +# https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/269 +Patch0: 269.patch +# https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/270 +Patch1: 270.patch BuildRequires: gcc gettext gtk-doc meson pkgconfig(geocode-glib-1.0) BuildRequires: pkgconfig(libdazzle-1.0) @@ -25,8 +31,8 @@ BuildRequires: pkgconfig(libecal-2.0) >= %{edataserver_version} BuildRequires: pkgconfig(libedataserver-1.2) >= %{edataserver_version} BuildRequires: pkgconfig(libgeoclue-2.0) BuildRequires: pkgconfig(libical) >= %{libical_version} -BuildRequires: pkgconfig(libsoup-2.4) -BuildRequires: /usr/bin/appstream-util +BuildRequires: pkgconfig(libsoup-3.0) +BuildRequires: libappstream-glib BuildRequires: desktop-file-utils Requires: evolution-data-server%{?_isa} >= %{edataserver_version} @@ -49,7 +55,7 @@ effort. %install %meson_install -%find_lang gnome-calendar +%find_lang %{name} %check desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Calendar.desktop @@ -72,6 +78,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/org.gnome %{_datadir}/gnome-shell/search-providers/org.gnome.Calendar.search-provider.ini %changelog +* Mon Jan 02 2023 lin zhang - 43.1-1 +- Update to 43.1 + * Mon Jun 20 2022 lin zhang - 42.2-1 - Update to 42.2