diff --git a/.cvsignore b/.cvsignore
index c321b4d..fbcef1b 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-evolution-2.23.3.1.tar.bz2
+evolution-2.23.4.tar.bz2
diff --git a/evolution-2.23.3.1-CVE-2008-1108.patch b/evolution-2.23.3.1-CVE-2008-1108.patch
deleted file mode 100644
index d97f26a..0000000
--- a/evolution-2.23.3.1-CVE-2008-1108.patch
+++ /dev/null
@@ -1,310 +0,0 @@
-diff -up evolution-2.23.3.1/calendar/gui/e-itip-control.c.CVE-2008-1108 evolution-2.23.3.1/calendar/gui/e-itip-control.c
---- evolution-2.23.3.1/calendar/gui/e-itip-control.c.CVE-2008-1108 2008-06-02 03:51:43.000000000 -0400
-+++ evolution-2.23.3.1/calendar/gui/e-itip-control.c 2008-06-03 16:37:10.000000000 -0400
-@@ -660,7 +660,7 @@ find_attendee (icalcomponent *ical_comp,
-
- static void
- write_label_piece (EItipControl *itip, ECalComponentDateTime *dt,
-- char *buffer, int size,
-+ GString *buffer,
- const char *stext, const char *etext,
- gboolean just_date)
- {
-@@ -685,13 +685,13 @@ write_label_piece (EItipControl *itip, E
- tmp_tm.tm_hour = tmp_tm.tm_min = tmp_tm.tm_sec = 0;
-
- if (stext != NULL)
-- strcat (buffer, stext);
-+ g_string_append (buffer, stext);
-
- e_time_format_date_and_time (&tmp_tm,
- calendar_config_get_24_hour_format (),
- FALSE, FALSE,
- time_buf, sizeof (time_buf));
-- strcat (buffer, time_buf);
-+ g_string_append (buffer, time_buf);
-
- if (!dt->value->is_utc && dt->tzid) {
- zone = icalcomponent_get_timezone (priv->top_level, dt->tzid);
-@@ -703,21 +703,21 @@ write_label_piece (EItipControl *itip, E
- UTF-8. But it probably is not translated. */
- display_name = icaltimezone_get_display_name (zone);
- if (display_name && *display_name) {
-- strcat (buffer, " [");
-+ g_string_append_len (buffer, " [", 16);
-
- /* We check if it is one of our builtin timezone names,
- in which case we call gettext to translate it. */
- if (icaltimezone_get_builtin_timezone (display_name)) {
-- strcat (buffer, _(display_name));
-+ g_string_append_printf (buffer, "%s", _(display_name));
- } else {
-- strcat (buffer, display_name);
-+ g_string_append_printf (buffer, "%s", display_name);
- }
-- strcat (buffer, "]");
-+ g_string_append_len (buffer, "]", 8);
- }
- }
-
- if (etext != NULL)
-- strcat (buffer, etext);
-+ g_string_append (buffer, etext);
- }
-
- static const char *
-@@ -754,19 +754,17 @@ get_dayname (struct icalrecurrencetype *
-
- static void
- write_recurrence_piece (EItipControl *itip, ECalComponent *comp,
-- char *buffer, int size)
-+ GString *buffer)
- {
- GSList *rrules;
- struct icalrecurrencetype *r;
-- int len, i;
-+ int i;
-
-- strcpy (buffer, "Recurring: ");
-- len = strlen (buffer);
-- buffer += len;
-- size -= len;
-+ g_string_append_len (buffer, "Recurring: ", 18);
-
- if (!e_cal_component_has_simple_recurrence (comp)) {
-- strcpy (buffer, _("Yes. (Complex Recurrence)"));
-+ g_string_append_printf (
-+ buffer, "%s", _("Yes. (Complex Recurrence)"));
- return;
- }
-
-@@ -782,7 +780,10 @@ write_recurrence_piece (EItipControl *it
- Every %d day/days" */
- /* For Translators : 'Every day' is event Recurring every day */
- /* For Translators : 'Every %d days' is event Recurring every %d days. %d is a digit */
-- sprintf (buffer, ngettext("Every day", "Every %d days", r->interval), r->interval);
-+ g_string_append_printf (
-+ buffer, ngettext ("Every day",
-+ "Every %d days", r->interval),
-+ r->interval);
- break;
-
- case ICAL_WEEKLY_RECURRENCE:
-@@ -792,29 +793,36 @@ write_recurrence_piece (EItipControl *it
- Every %d week/weeks" */
- /* For Translators : 'Every week' is event Recurring every week */
- /* For Translators : 'Every %d weeks' is event Recurring every %d weeks. %d is a digit */
-- sprintf (buffer, ngettext("Every week", "Every %d weeks", r->interval), r->interval);
-+ g_string_append_printf (
-+ buffer, ngettext ("Every week",
-+ "Every %d weeks", r->interval),
-+ r->interval);
- } else {
- /* For Translators : 'Every week on' is event Recurring every week on (dayname) and (dayname) and (dayname) */
- /* For Translators : 'Every %d weeks on' is event Recurring: every %d weeks on (dayname) and (dayname). %d is a digit */
-- sprintf (buffer, ngettext("Every week on ", "Every %d weeks on ", r->interval), r->interval);
-+ g_string_append_printf (
-+ buffer, ngettext ("Every week on ",
-+ "Every %d weeks on ", r->interval),
-+ r->interval);
-
- for (i = 1; i < 8 && r->by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
- if (i > 1)
-- strcat (buffer, ", ");
-- strcat (buffer, get_dayname (r, i - 1));
-+ g_string_append_len (buffer, ", ", 2);
-+ g_string_append (buffer, get_dayname (r, i - 1));
- }
- if (i > 1)
- /* For Translators : 'and' is part of the sentence 'event recurring every week on (dayname) and (dayname)' */
-- strcat (buffer, _(" and "));
-- strcat (buffer, get_dayname (r, i - 1));
-+ g_string_append_printf (buffer, "%s", _(" and "));
-+ g_string_append (buffer, get_dayname (r, i - 1));
- }
- break;
-
- case ICAL_MONTHLY_RECURRENCE:
- if (r->by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
- /* For Translators : 'The %s day of' is part of the sentence 'event recurring on the (nth) day of every month.' */
-- sprintf (buffer, _("The %s day of "),
-- nth (r->by_month_day[0]));
-+ g_string_append_printf (
-+ buffer, _("The %s day of "),
-+ nth (r->by_month_day[0]));
- } else {
- int pos;
-
-@@ -828,20 +836,21 @@ write_recurrence_piece (EItipControl *it
-
- /* For Translators : 'The %s %s of' is part of the sentence 'event recurring on the (nth) (dayname) of every month.'
- eg,third monday of every month */
-- sprintf (buffer, _("The %s %s of "),
-- nth (pos), get_dayname (r, 0));
-+ g_string_append_printf (
-+ buffer, _("The %s %s of "),
-+ nth (pos), get_dayname (r, 0));
- }
-
-- len = strlen (buffer);
-- buffer += len;
-- size -= len;
- /* For Translators: In this can also be translated as "With the period of %d
- month/months", where %d is a number. The entire sentence is of the form "Recurring:
- Every %d month/months" */
- /* For Translators : 'every month' is part of the sentence 'event recurring on the (nth) day of every month.' */
- /* For Translators : 'every %d months' is part of the sentence 'event recurring on the (nth) day of every %d months.'
- %d is a digit */
-- sprintf (buffer, ngettext("every month","every %d months", r->interval), r->interval);
-+ g_string_append_printf (
-+ buffer, ngettext ("every month",
-+ "every %d months", r->interval),
-+ r->interval);
- break;
-
- case ICAL_YEARLY_RECURRENCE:
-@@ -850,20 +859,22 @@ write_recurrence_piece (EItipControl *it
- Every %d year/years" */
- /* For Translators : 'Every year' is event Recurring every year */
- /* For Translators : 'Every %d years' is event Recurring every %d years. %d is a digit */
-- sprintf (buffer, ngettext("Every year", "Every %d years", r->interval), r->interval);
-+ g_string_append_printf (
-+ buffer, ngettext ("Every year",
-+ "Every %d years", r->interval),
-+ r->interval);
- break;
-
- default:
- g_return_if_reached ();
- }
-
-- len = strlen (buffer);
-- buffer += len;
-- size -= len;
- if (r->count) {
- /* For Translators:'a total of %d time' is part of the sentence of the form 'event recurring every day,a total of % time.' %d is a digit*/
- /* For Translators:'a total of %d times' is part of the sentence of the form 'event recurring every day,a total of % times.' %d is a digit*/
-- sprintf (buffer, ngettext("a total of %d time", " a total of %d times", r->count), r->count);
-+ g_string_append_printf (
-+ buffer, ngettext ("a total of %d time",
-+ " a total of %d times", r->count), r->count);
- } else if (!icaltime_is_null_time (r->until)) {
- ECalComponentDateTime dt;
-
-@@ -871,12 +882,12 @@ write_recurrence_piece (EItipControl *it
- dt.value = &r->until;
- dt.tzid = icaltimezone_get_tzid ((icaltimezone *)r->until.zone);
-
-- write_label_piece (itip, &dt, buffer, size,
-+ write_label_piece (itip, &dt, buffer,
- /* For Translators : ', ending on' is part of the sentence of the form 'event recurring every day, ending on (date).'*/
- _(", ending on "), NULL, TRUE);
- }
-
-- strcat (buffer, "
");
-+ g_string_append_len (buffer, "
", 4);
- }
-
- static void
-@@ -884,47 +895,51 @@ set_date_label (EItipControl *itip, GtkH
- ECalComponent *comp)
- {
- ECalComponentDateTime datetime;
-- static char buffer[1024];
-+ GString *buffer;
- gchar *str;
- gboolean wrote = FALSE, task_completed = FALSE;
- ECalComponentVType type;
-
-+ buffer = g_string_sized_new (1024);
- type = e_cal_component_get_vtype (comp);
-
-- buffer[0] = '\0';
- e_cal_component_get_dtstart (comp, &datetime);
- if (datetime.value) {
- /* For Translators : 'starts' is starts:date implying a task starts on what date */
- str = g_strdup_printf ("%s:", _("Starts"));
-- write_label_piece (itip, &datetime, buffer, 1024,
-- str,
-- "
", FALSE);
-- gtk_html_write (html, html_stream, buffer, strlen(buffer));
-+ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
-+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
- wrote = TRUE;
- g_free (str);
- }
- e_cal_component_free_datetime (&datetime);
-
-- buffer[0] = '\0';
-+ /* Reset the buffer. */
-+ g_string_truncate (buffer, 0);
-+
- e_cal_component_get_dtend (comp, &datetime);
- if (datetime.value){
- /* For Translators : 'ends' is ends:date implying a task ends on what date */
- str = g_strdup_printf ("%s:", _("Ends"));
-- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE);
-- gtk_html_write (html, html_stream, buffer, strlen (buffer));
-+ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
-+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
- wrote = TRUE;
- g_free (str);
- }
- e_cal_component_free_datetime (&datetime);
-
-- buffer[0] = '\0';
-+ /* Reset the buffer. */
-+ g_string_truncate (buffer, 0);
-+
- if (e_cal_component_has_recurrences (comp)) {
-- write_recurrence_piece (itip, comp, buffer, 1024);
-- gtk_html_write (html, html_stream, buffer, strlen (buffer));
-+ write_recurrence_piece (itip, comp, buffer);
-+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
- wrote = TRUE;
- }
-
-- buffer[0] = '\0';
-+ /* Reset the buffer. */
-+ g_string_truncate (buffer, 0);
-+
- datetime.tzid = NULL;
- e_cal_component_get_completed (comp, &datetime.value);
- if (type == E_CAL_COMPONENT_TODO && datetime.value) {
-@@ -932,20 +947,22 @@ set_date_label (EItipControl *itip, GtkH
- timezone. */
- str = g_strdup_printf ("%s:", _("Completed"));
- datetime.value->is_utc = TRUE;
-- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE);
-- gtk_html_write (html, html_stream, buffer, strlen (buffer));
-+ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
-+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
- wrote = TRUE;
- task_completed = TRUE;
- g_free (str);
- }
- e_cal_component_free_datetime (&datetime);
-
-- buffer[0] = '\0';
-+ /* Reset the buffer. */
-+ g_string_truncate (buffer, 0);
-+
- e_cal_component_get_due (comp, &datetime);
- if (type == E_CAL_COMPONENT_TODO && !task_completed && datetime.value) {
- str = g_strdup_printf ("%s:", _("Due"));
-- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE);
-- gtk_html_write (html, html_stream, buffer, strlen (buffer));
-+ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
-+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
- wrote = TRUE;
- g_free (str);
- }
-@@ -954,6 +971,8 @@ set_date_label (EItipControl *itip, GtkH
-
- if (wrote)
- gtk_html_stream_printf (html_stream, "
");
-+
-+ g_string_free (buffer, TRUE);
- }
-
- static void
diff --git a/evolution-2.23.3.1-CVE-2008-1109.patch b/evolution-2.23.3.1-CVE-2008-1109.patch
deleted file mode 100644
index f8be42c..0000000
--- a/evolution-2.23.3.1-CVE-2008-1109.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-diff -up evolution-2.23.3.1/calendar/gui/itip-utils.c.CVE-2008-1109 evolution-2.23.3.1/calendar/gui/itip-utils.c
---- evolution-2.23.3.1/calendar/gui/itip-utils.c.CVE-2008-1109 2008-06-02 03:51:43.000000000 -0400
-+++ evolution-2.23.3.1/calendar/gui/itip-utils.c 2008-06-03 16:37:21.000000000 -0400
-@@ -172,50 +172,16 @@ get_attendee_if_attendee_sentby_is_user
- }
-
- static char *
--html_new_lines_for (char *string)
-+html_new_lines_for (const char *string)
- {
-- char *html_string = (char *) malloc (sizeof (char)* (3500));
-- int length = strlen (string);
-- int index = 0;
-- char *index_ptr = string;
-- char *temp = string;
-+ gchar **lines;
-+ gchar *joined;
-
-- /*Find the first occurence*/
-- index_ptr = strstr ((const char *)temp, "\n");
-+ lines = g_strsplit_set (string, "\n", -1);
-+ joined = g_strjoinv ("
", lines);
-+ g_strfreev (lines);
-
-- /*Doesn't occur*/
-- if (index_ptr == NULL) {
-- strcpy (html_string, (const char *)string);
-- html_string[length] = '\0';
-- return html_string;
-- }
--
-- /*Split into chunks inserting
for \n */
-- do{
-- while (temp != index_ptr){
-- html_string[index++] = *temp;
-- temp++;
-- }
-- temp++;
--
-- html_string[index++] = '<';
-- html_string[index++] = 'b';
-- html_string[index++] = 'r';
-- html_string[index++] = '>';
--
-- index_ptr = strstr ((const char *)temp, "\n");
--
-- } while (index_ptr);
--
-- /*Don't leave out the last chunk*/
-- while (*temp != '\0'){
-- html_string[index++] = *temp;
-- temp++;
-- }
--
-- html_string[index] = '\0';
--
-- return html_string;
-+ return joined;
- }
-
- char *
diff --git a/evolution.spec b/evolution.spec
index 0ded835..1944093 100644
--- a/evolution.spec
+++ b/evolution.spec
@@ -44,8 +44,8 @@
### Abstract ###
Name: evolution
-Version: 2.23.3.1
-Release: 4%{?dist}
+Version: 2.23.4
+Release: 1%{?dist}
License: GPLv2 and GFDL+
Group: Applications/Productivity
Summary: Mail and calendar client for GNOME
@@ -77,12 +77,6 @@ Patch13: evolution-2.7.1-no-gnome-common.patch
# RH bug #176400
Patch14: evolution-2.9.1-im-context-reset.patch
-# RH bug #449925 / CVE-2008-1108
-Patch15: evolution-2.23.3.1-CVE-2008-1108.patch
-
-# RH bug #449925 / CVE-2008-1109
-Patch16: evolution-2.23.3.1-CVE-2008-1109.patch
-
## Dependencies ###
Requires(post): GConf2
@@ -226,8 +220,6 @@ This package contains the plugin to filter junk mail using SpamAssassin.
%patch12 -p1 -b .fix-conduit-dir
%patch13 -p1 -b .no-gnome-common
%patch14 -p1 -b .im-context-reset
-%patch15 -p1 -b .CVE-2008-1108
-%patch16 -p1 -b .CVE-2008-1109
mkdir -p krb5-fakeprefix/include
mkdir -p krb5-fakeprefix/lib
@@ -655,6 +647,10 @@ rm -rf $RPM_BUILD_ROOT
%{evo_plugin_dir}/liborg-gnome-sa-junk-plugin.so
%changelog
+* Mon Jun 16 2008 Matthew Barnes - 2.23.4-1.fc10
+- Update to 2.23.4
+- Remove patches for RH bug #449925 (fixed upstream).
+
* Fri Jun 06 2008 Matthew Barnes - 2.23.3.1-4.fc10
- Use a less pretentious summary.
diff --git a/sources b/sources
index c6c64a6..243813b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-e9b4d48ab7cd78bc4a3b5a75aff0c69c evolution-2.23.3.1.tar.bz2
+5a6ceba4a7cdb33fb02fe32e1c58cb40 evolution-2.23.4.tar.bz2