Compare commits
16 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5b59f011f | ||
|
|
f8a08bb19b | ||
|
|
7c492b3389 | ||
|
|
e3da36e36e | ||
|
|
4f74dc449f | ||
|
|
a7dcc278dc | ||
|
|
a31a9c3eca | ||
|
|
b1284d5727 | ||
|
|
8419f5803c | ||
|
|
f3686316a2 | ||
|
|
56e27484b7 | ||
|
|
0a2d680bd1 | ||
|
|
4a1fc8f40b | ||
|
|
1317f5eb91 | ||
|
|
5cdd21ea26 | ||
|
|
991b1c955a |
15 changed files with 953 additions and 831 deletions
|
|
@ -1 +0,0 @@
|
|||
evolution-2.12.1.tar.bz2
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
evolution-2.12.3.tar.bz2
|
||||
21
Makefile
21
Makefile
|
|
@ -1,21 +0,0 @@
|
|||
# Makefile for source rpm: evolution
|
||||
# $Id: Makefile,v 1.1 2004/09/09 04:34:33 cvsdist Exp $
|
||||
NAME := evolution
|
||||
SPECFILE = $(firstword $(wildcard *.spec))
|
||||
|
||||
define find-makefile-common
|
||||
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||
|
||||
ifeq ($(MAKEFILE_COMMON),)
|
||||
# attempt a checkout
|
||||
define checkout-makefile-common
|
||||
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||
endif
|
||||
|
||||
include $(MAKEFILE_COMMON)
|
||||
|
|
@ -255,15 +255,6 @@ diff -up evolution-2.12.0/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.12.
|
|||
int
|
||||
e_plugin_lib_enable (EPluginLib *ep, int enable)
|
||||
{
|
||||
@@ -266,8 +305,6 @@ bbdb_open_addressbook (int type)
|
||||
char *uri;
|
||||
EBook *book = NULL;
|
||||
|
||||
- gboolean enable;
|
||||
-
|
||||
gboolean status;
|
||||
GError *error = NULL;
|
||||
|
||||
@@ -345,8 +382,23 @@ enable_toggled_cb (GtkWidget *widget, gp
|
||||
|
||||
gtk_widget_set_sensitive (stuff->option_menu, active);
|
||||
|
|
|
|||
15
evolution-2.10.3-server-message-double-free.patch
Normal file
15
evolution-2.10.3-server-message-double-free.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
diff -up evolution-2.10.3/mail/mail-session.c.server-message-double-free evolution-2.10.3/mail/mail-session.c
|
||||
--- evolution-2.10.3/mail/mail-session.c.server-message-double-free 2008-03-25 10:01:13.000000000 -0400
|
||||
+++ evolution-2.10.3/mail/mail-session.c 2008-03-25 10:01:25.000000000 -0400
|
||||
@@ -389,10 +389,8 @@ alert_user(CamelSession *session, CamelS
|
||||
mail_msg_unref (m);
|
||||
}
|
||||
|
||||
- if (m->ismain) {
|
||||
- user_message_free (m);
|
||||
+ if (m->ismain)
|
||||
mail_msg_unref (m);
|
||||
- }
|
||||
|
||||
return result;
|
||||
}
|
||||
12
evolution-2.12.1-source-changed-event.patch
Normal file
12
evolution-2.12.1-source-changed-event.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up evolution-2.12.1/calendar/gui/dialogs/task-page.c.source-changed-event evolution-2.12.1/calendar/gui/dialogs/task-page.c
|
||||
--- evolution-2.12.1/calendar/gui/dialogs/task-page.c.source-changed-event 2007-11-16 19:07:11.000000000 +0100
|
||||
+++ evolution-2.12.1/calendar/gui/dialogs/task-page.c 2007-11-16 19:08:06.000000000 +0100
|
||||
@@ -1837,7 +1837,7 @@ init_widgets (TaskPage *tpage)
|
||||
G_CALLBACK (categories_clicked_cb), tpage);
|
||||
|
||||
/* Source selector */
|
||||
- g_signal_connect((priv->source_selector), "source_changed",
|
||||
+ g_signal_connect((priv->source_selector), "changed",
|
||||
G_CALLBACK (source_changed_cb), tpage);
|
||||
|
||||
/* Connect the default signal handler to use to make sure the "changed"
|
||||
48
evolution-2.12.3-CVE-2008-0072.patch
Normal file
48
evolution-2.12.3-CVE-2008-0072.patch
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
diff -up evolution-2.12.3/mail/em-format.c.CVE-2008-0072 evolution-2.12.3/mail/em-format.c
|
||||
--- evolution-2.12.3/mail/em-format.c.CVE-2008-0072 2007-10-12 02:56:01.000000000 -0400
|
||||
+++ evolution-2.12.3/mail/em-format.c 2008-03-04 15:59:30.000000000 -0500
|
||||
@@ -1193,7 +1193,7 @@ emf_application_xpkcs7mime(EMFormat *emf
|
||||
opart = camel_mime_part_new();
|
||||
valid = camel_cipher_decrypt(context, part, opart, ex);
|
||||
if (valid == NULL) {
|
||||
- em_format_format_error(emf, stream, ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error"));
|
||||
+ em_format_format_error(emf, stream, "%s", ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error"));
|
||||
em_format_part_as(emf, stream, part, NULL);
|
||||
} else {
|
||||
if (emfc == NULL)
|
||||
@@ -1350,7 +1350,7 @@ emf_multipart_encrypted(EMFormat *emf, C
|
||||
if (valid == NULL) {
|
||||
em_format_format_error(emf, stream, ex->desc?_("Could not parse PGP/MIME message"):_("Could not parse PGP/MIME message: Unknown error"));
|
||||
if (ex->desc)
|
||||
- em_format_format_error(emf, stream, ex->desc);
|
||||
+ em_format_format_error(emf, stream, "%s", ex->desc);
|
||||
em_format_part_as(emf, stream, part, "multipart/mixed");
|
||||
} else {
|
||||
if (emfc == NULL)
|
||||
@@ -1515,7 +1515,7 @@ emf_multipart_signed(EMFormat *emf, Came
|
||||
if (valid == NULL) {
|
||||
em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature"));
|
||||
if (ex->desc)
|
||||
- em_format_format_error(emf, stream, ex->desc);
|
||||
+ em_format_format_error(emf, stream, "%s", ex->desc);
|
||||
em_format_part_as(emf, stream, part, "multipart/mixed");
|
||||
} else {
|
||||
if (emfc == NULL)
|
||||
@@ -1586,7 +1586,7 @@ emf_inlinepgp_signed(EMFormat *emf, Came
|
||||
if (!valid) {
|
||||
em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature"));
|
||||
if (ex->desc)
|
||||
- em_format_format_error(emf, stream, ex->desc);
|
||||
+ em_format_format_error(emf, stream, "%s", ex->desc);
|
||||
em_format_format_source(emf, stream, ipart);
|
||||
/* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
|
||||
camel_exception_free(ex);
|
||||
@@ -1657,7 +1657,7 @@ emf_inlinepgp_encrypted(EMFormat *emf, C
|
||||
if (!valid) {
|
||||
em_format_format_error(emf, stream, ex->desc?_("Could not parse PGP message"):_("Could not parse PGP message: Unknown error"));
|
||||
if (ex->desc)
|
||||
- em_format_format_error(emf, stream, ex->desc);
|
||||
+ em_format_format_error(emf, stream, "%s", ex->desc);
|
||||
em_format_format_source(emf, stream, ipart);
|
||||
/* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
|
||||
camel_exception_free(ex);
|
||||
310
evolution-2.12.3-CVE-2008-1108.patch
Normal file
310
evolution-2.12.3-CVE-2008-1108.patch
Normal file
|
|
@ -0,0 +1,310 @@
|
|||
diff -up evolution-2.12.3/calendar/gui/e-itip-control.c.CVE-2008-1108 evolution-2.12.3/calendar/gui/e-itip-control.c
|
||||
--- evolution-2.12.3/calendar/gui/e-itip-control.c.CVE-2008-1108 2008-06-03 16:49:05.000000000 -0400
|
||||
+++ evolution-2.12.3/calendar/gui/e-itip-control.c 2008-06-03 16:51:33.000000000 -0400
|
||||
@@ -650,7 +650,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)
|
||||
{
|
||||
@@ -675,13 +675,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);
|
||||
@@ -693,21 +693,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, " <font size=-1>[");
|
||||
+ g_string_append_len (buffer, " <font size=-1>[", 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, "]</font>");
|
||||
+ g_string_append_len (buffer, "]</font>", 8);
|
||||
}
|
||||
}
|
||||
|
||||
if (etext != NULL)
|
||||
- strcat (buffer, etext);
|
||||
+ g_string_append (buffer, etext);
|
||||
}
|
||||
|
||||
static const char *
|
||||
@@ -744,19 +744,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, "<b>Recurring:</b> ");
|
||||
- len = strlen (buffer);
|
||||
- buffer += len;
|
||||
- size -= len;
|
||||
+ g_string_append_len (buffer, "<b>Recurring:</b> ", 18);
|
||||
|
||||
if (!e_cal_component_has_simple_recurrence (comp)) {
|
||||
- strcpy (buffer, _("Yes. (Complex Recurrence)"));
|
||||
+ g_string_append_printf (
|
||||
+ buffer, "%s", _("Yes. (Complex Recurrence)"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -772,7 +770,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:
|
||||
@@ -782,29 +783,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;
|
||||
|
||||
@@ -818,20 +826,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:
|
||||
@@ -840,20 +849,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;
|
||||
|
||||
@@ -861,12 +872,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, "<br>");
|
||||
+ g_string_append_len (buffer, "<br>", 4);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -874,47 +885,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 ("<b>%s:</b>", _("Starts"));
|
||||
- write_label_piece (itip, &datetime, buffer, 1024,
|
||||
- str,
|
||||
- "<br>", FALSE);
|
||||
- gtk_html_write (html, html_stream, buffer, strlen(buffer));
|
||||
+ write_label_piece (itip, &datetime, buffer, str, "<br>", 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 ("<b>%s:</b>", _("Ends"));
|
||||
- write_label_piece (itip, &datetime, buffer, 1024, str, "<br>", FALSE);
|
||||
- gtk_html_write (html, html_stream, buffer, strlen (buffer));
|
||||
+ write_label_piece (itip, &datetime, buffer, str, "<br>", 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) {
|
||||
@@ -922,20 +937,22 @@ set_date_label (EItipControl *itip, GtkH
|
||||
timezone. */
|
||||
str = g_strdup_printf ("<b>%s:</b>", _("Completed"));
|
||||
datetime.value->is_utc = TRUE;
|
||||
- write_label_piece (itip, &datetime, buffer, 1024, str, "<br>", FALSE);
|
||||
- gtk_html_write (html, html_stream, buffer, strlen (buffer));
|
||||
+ write_label_piece (itip, &datetime, buffer, str, "<br>", 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 ("<b>%s:</b>", _("Due"));
|
||||
- write_label_piece (itip, &datetime, buffer, 1024, str, "<br>", FALSE);
|
||||
- gtk_html_write (html, html_stream, buffer, strlen (buffer));
|
||||
+ write_label_piece (itip, &datetime, buffer, str, "<br>", FALSE);
|
||||
+ gtk_html_write (html, html_stream, buffer->str, buffer->len);
|
||||
wrote = TRUE;
|
||||
g_free (str);
|
||||
}
|
||||
@@ -944,6 +961,8 @@ set_date_label (EItipControl *itip, GtkH
|
||||
|
||||
if (wrote)
|
||||
gtk_html_stream_printf (html_stream, "<br>");
|
||||
+
|
||||
+ g_string_free (buffer, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
61
evolution-2.12.3-CVE-2008-1109.patch
Normal file
61
evolution-2.12.3-CVE-2008-1109.patch
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
diff -up evolution-2.12.3/calendar/gui/itip-utils.c.CVE-2008-1109 evolution-2.12.3/calendar/gui/itip-utils.c
|
||||
--- evolution-2.12.3/calendar/gui/itip-utils.c.CVE-2008-1109 2007-10-12 03:04:17.000000000 -0400
|
||||
+++ evolution-2.12.3/calendar/gui/itip-utils.c 2008-06-03 16:51:42.000000000 -0400
|
||||
@@ -176,50 +176,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 ("<br>", 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 <br> 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 *
|
||||
36
evolution-2.12.3-no-drag-finish.patch
Normal file
36
evolution-2.12.3-no-drag-finish.patch
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
diff -up evolution-2.12.3/mail/em-folder-tree.c.no-drag-finish evolution-2.12.3/mail/em-folder-tree.c
|
||||
--- evolution-2.12.3/mail/em-folder-tree.c.no-drag-finish 2008-03-03 18:34:41.000000000 +0100
|
||||
+++ evolution-2.12.3/mail/em-folder-tree.c 2008-03-03 18:34:45.000000000 +0100
|
||||
@@ -927,23 +927,6 @@ emft_drop_async__exec (struct _DragDataR
|
||||
}
|
||||
|
||||
static void
|
||||
-emft_drop_async__done (struct _DragDataReceivedAsync *m)
|
||||
-{
|
||||
- gboolean success, delete;
|
||||
-
|
||||
- /* ?? */
|
||||
- if (m->aborted) {
|
||||
- success = FALSE;
|
||||
- delete = FALSE;
|
||||
- } else {
|
||||
- success = !camel_exception_is_set (&m->base.ex);
|
||||
- delete = success && m->move && !m->moved;
|
||||
- }
|
||||
-
|
||||
- gtk_drag_finish (m->context, success, delete, GDK_CURRENT_TIME);
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
emft_drop_async__free (struct _DragDataReceivedAsync *m)
|
||||
{
|
||||
g_object_unref(m->context);
|
||||
@@ -958,7 +941,7 @@ static MailMsgInfo emft_drop_async_info
|
||||
sizeof (struct _DragDataReceivedAsync),
|
||||
(MailMsgDescFunc) emft_drop_async__desc,
|
||||
(MailMsgExecFunc) emft_drop_async__exec,
|
||||
- (MailMsgDoneFunc) emft_drop_async__done,
|
||||
+ NULL,
|
||||
(MailMsgFreeFunc) emft_drop_async__free
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,299 +0,0 @@
|
|||
--- evolution-2.9.1/mail/message-list.c.ememory 2006-10-25 11:11:34.000000000 -0400
|
||||
+++ evolution-2.9.1/mail/message-list.c 2006-10-25 11:15:12.000000000 -0400
|
||||
@@ -412,70 +412,28 @@
|
||||
return info;
|
||||
}
|
||||
|
||||
-static const char *
|
||||
-get_normalised_string (MessageList *message_list, CamelMessageInfo *info, int col)
|
||||
+static const gchar *
|
||||
+get_normalised_string (MessageList *message_list, const gchar *string)
|
||||
{
|
||||
- const char *string, *str;
|
||||
- char *normalised;
|
||||
- EPoolv *poolv;
|
||||
- int index;
|
||||
-
|
||||
- switch (col) {
|
||||
- case COL_SUBJECT_NORM:
|
||||
- string = camel_message_info_subject (info);
|
||||
- index = NORMALISED_SUBJECT;
|
||||
- break;
|
||||
- case COL_FROM_NORM:
|
||||
- string = camel_message_info_from (info);
|
||||
- index = NORMALISED_FROM;
|
||||
- break;
|
||||
- case COL_TO_NORM:
|
||||
- string = camel_message_info_to (info);
|
||||
- index = NORMALISED_TO;
|
||||
- break;
|
||||
- default:
|
||||
- string = NULL;
|
||||
- index = NORMALISED_LAST;
|
||||
- g_warning ("Should not be reached\n");
|
||||
- }
|
||||
-
|
||||
- /* slight optimisation */
|
||||
- if (string == NULL || string[0] == '\0')
|
||||
+ GHashTable *hash_table = message_list->normalised_hash;
|
||||
+ GStringChunk *string_chunk = message_list->string_chunk;
|
||||
+ gchar *collation_key, *temp;
|
||||
+
|
||||
+ if (string == NULL || *string == '\0')
|
||||
return "";
|
||||
-
|
||||
- poolv = g_hash_table_lookup (message_list->normalised_hash, camel_message_info_uid (info));
|
||||
- if (poolv == NULL) {
|
||||
- poolv = e_poolv_new (NORMALISED_LAST);
|
||||
- g_hash_table_insert (message_list->normalised_hash, (char *) camel_message_info_uid (info), poolv);
|
||||
- } else {
|
||||
- str = e_poolv_get (poolv, index);
|
||||
- if (*str)
|
||||
- return str;
|
||||
- }
|
||||
-
|
||||
- if (col == COL_SUBJECT_NORM) {
|
||||
- const unsigned char *subject;
|
||||
-
|
||||
- subject = (const unsigned char *) string;
|
||||
- while (!g_ascii_strncasecmp ((char *)subject, "Re:", 3)) {
|
||||
- subject += 3;
|
||||
-
|
||||
- /* jump over any spaces */
|
||||
- while (*subject && isspace ((int) *subject))
|
||||
- subject++;
|
||||
- }
|
||||
-
|
||||
- /* jump over any spaces */
|
||||
- while (*subject && isspace ((int) *subject))
|
||||
- subject++;
|
||||
-
|
||||
- string = (const char *) subject;
|
||||
- }
|
||||
-
|
||||
- normalised = g_utf8_collate_key (string, -1);
|
||||
- e_poolv_set (poolv, index, normalised, TRUE);
|
||||
-
|
||||
- return e_poolv_get (poolv, index);
|
||||
+
|
||||
+ collation_key = g_hash_table_lookup (hash_table, string);
|
||||
+ if (collation_key != NULL)
|
||||
+ return collation_key;
|
||||
+
|
||||
+ temp = g_utf8_collate_key (string, -1);
|
||||
+ collation_key = g_string_chunk_insert_const (string_chunk, temp);
|
||||
+ g_free (temp);
|
||||
+
|
||||
+ temp = g_string_chunk_insert_const (string_chunk, string);
|
||||
+ g_hash_table_insert (hash_table, temp, collation_key);
|
||||
+
|
||||
+ return collation_key;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1283,12 +1241,23 @@
|
||||
str = camel_message_info_from (msg_info);
|
||||
return (void *)(str ? str : "");
|
||||
case COL_FROM_NORM:
|
||||
- return (void *) get_normalised_string (message_list, msg_info, col);
|
||||
+ str = camel_message_info_from (msg_info);
|
||||
+ return (void *) get_normalised_string (message_list, str);
|
||||
case COL_SUBJECT:
|
||||
str = camel_message_info_subject (msg_info);
|
||||
return (void *)(str ? str : "");
|
||||
case COL_SUBJECT_NORM:
|
||||
- return (void *) get_normalised_string (message_list, msg_info, col);
|
||||
+ str = camel_message_info_subject (msg_info);
|
||||
+ while (str != NULL && *str != '\0') {
|
||||
+ /* skip over spaces and reply prefixes */
|
||||
+ if (g_ascii_strncasecmp (str, "Re:", 3) == 0)
|
||||
+ str += 3;
|
||||
+ else if (g_ascii_isspace (*str))
|
||||
+ str++;
|
||||
+ else
|
||||
+ break;
|
||||
+ }
|
||||
+ return (void *) get_normalised_string (message_list, str);
|
||||
case COL_SENT: {
|
||||
ETreePath child;
|
||||
|
||||
@@ -1312,7 +1281,8 @@
|
||||
str = camel_message_info_to (msg_info);
|
||||
return (void *)(str ? str : "");
|
||||
case COL_TO_NORM:
|
||||
- return (void *) get_normalised_string (message_list, msg_info, col);
|
||||
+ str = camel_message_info_to (msg_info);
|
||||
+ return (void *) get_normalised_string (message_list, str);
|
||||
case COL_SIZE:
|
||||
return GINT_TO_POINTER (camel_message_info_size(msg_info));
|
||||
case COL_DELETED:
|
||||
@@ -2023,9 +1993,10 @@
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (message_list), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
|
||||
|
||||
message_list->normalised_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
+ message_list->string_chunk = g_string_chunk_new (1024);
|
||||
|
||||
message_list->hidden = NULL;
|
||||
- message_list->hidden_pool = NULL;
|
||||
+ message_list->hidden_string_chunk = NULL;
|
||||
message_list->hide_before = ML_HIDE_NONE_START;
|
||||
message_list->hide_after = ML_HIDE_NONE_END;
|
||||
|
||||
@@ -2054,14 +2025,6 @@
|
||||
g_signal_connect (((GtkScrolledWindow *) message_list)->vscrollbar, "value-changed", G_CALLBACK (ml_scrolled), message_list);
|
||||
}
|
||||
|
||||
-static gboolean
|
||||
-normalised_free (gpointer key, gpointer value, gpointer user_data)
|
||||
-{
|
||||
- e_poolv_destroy (value);
|
||||
-
|
||||
- return TRUE;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
message_list_destroy(GtkObject *object)
|
||||
{
|
||||
@@ -2127,17 +2090,17 @@
|
||||
MessageList *message_list = MESSAGE_LIST (object);
|
||||
struct _MessageListPrivate *p = message_list->priv;
|
||||
|
||||
- g_hash_table_foreach (message_list->normalised_hash, (GHFunc) normalised_free, NULL);
|
||||
g_hash_table_destroy (message_list->normalised_hash);
|
||||
+ g_string_chunk_free (message_list->string_chunk);
|
||||
|
||||
if (message_list->thread_tree)
|
||||
camel_folder_thread_messages_unref(message_list->thread_tree);
|
||||
|
||||
if (message_list->hidden) {
|
||||
g_hash_table_destroy(message_list->hidden);
|
||||
- e_mempool_destroy(message_list->hidden_pool);
|
||||
+ g_string_chunk_free(message_list->hidden_string_chunk);
|
||||
message_list->hidden = NULL;
|
||||
- message_list->hidden_pool = NULL;
|
||||
+ message_list->hidden_string_chunk = NULL;
|
||||
}
|
||||
|
||||
g_free(message_list->search);
|
||||
@@ -2940,17 +2903,6 @@
|
||||
d(printf("changed = %d added = %d removed = %d\n",
|
||||
changes->uid_changed->len, changes->uid_added->len, changes->uid_removed->len));
|
||||
|
||||
- for (i = 0; i < changes->uid_removed->len; i++) {
|
||||
- /* uncache the normalised strings for these uids */
|
||||
- EPoolv *poolv;
|
||||
-
|
||||
- poolv = g_hash_table_lookup (ml->normalised_hash, changes->uid_removed->pdata[i]);
|
||||
- if (poolv != NULL) {
|
||||
- g_hash_table_remove (ml->normalised_hash, changes->uid_removed->pdata[i]);
|
||||
- e_poolv_destroy (poolv);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
/* check if the hidden state has changed, if so modify accordingly, then regenerate */
|
||||
if (ml->hidejunk || ml->hidedeleted)
|
||||
mail_folder_hide_by_flag (folder, ml, &changes, (ml->hidejunk ? CAMEL_MESSAGE_JUNK : 0) | (ml->hidedeleted ? CAMEL_MESSAGE_DELETED : 0));
|
||||
@@ -3028,7 +2980,11 @@
|
||||
}
|
||||
|
||||
/* reset the normalised sort performance hack */
|
||||
- g_hash_table_foreach_remove (message_list->normalised_hash, normalised_free, NULL);
|
||||
+ /* XXX GLib 2.12 added g_hash_table_remove_all() */
|
||||
+ g_hash_table_destroy (message_list->normalised_hash);
|
||||
+ message_list->normalised_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
+ g_string_chunk_free (message_list->string_chunk);
|
||||
+ message_list->string_chunk = g_string_chunk_new (1024);
|
||||
|
||||
mail_regen_cancel(message_list);
|
||||
|
||||
@@ -3479,14 +3435,14 @@
|
||||
MESSAGE_LIST_LOCK (ml, hide_lock);
|
||||
if (ml->hidden == NULL) {
|
||||
ml->hidden = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
- ml->hidden_pool = e_mempool_new (512, 256, E_MEMPOOL_ALIGN_BYTE);
|
||||
+ ml->hidden_string_chunk = g_string_chunk_new (512);
|
||||
}
|
||||
|
||||
- uid = e_mempool_strdup (ml->hidden_pool, uids->pdata[i]);
|
||||
+ uid = g_string_chunk_insert (ml->hidden_string_chunk, uids->pdata[i]);
|
||||
g_hash_table_insert (ml->hidden, uid, uid);
|
||||
for ( ; i < uids->len; i++) {
|
||||
if (g_hash_table_lookup (ml->uid_nodemap, uids->pdata[i])) {
|
||||
- uid = e_mempool_strdup (ml->hidden_pool, uids->pdata[i]);
|
||||
+ uid = g_string_chunk_insert (ml->hidden_string_chunk, uids->pdata[i]);
|
||||
g_hash_table_insert (ml->hidden, uid, uid);
|
||||
}
|
||||
}
|
||||
@@ -3507,9 +3463,9 @@
|
||||
MESSAGE_LIST_LOCK (ml, hide_lock);
|
||||
if (ml->hidden) {
|
||||
g_hash_table_destroy (ml->hidden);
|
||||
- e_mempool_destroy (ml->hidden_pool);
|
||||
+ g_string_chunk_free (ml->hidden_string_chunk);
|
||||
ml->hidden = NULL;
|
||||
- ml->hidden_pool = NULL;
|
||||
+ ml->hidden_string_chunk = NULL;
|
||||
}
|
||||
ml->hide_before = ML_HIDE_NONE_START;
|
||||
ml->hide_after = ML_HIDE_NONE_END;
|
||||
@@ -3545,9 +3501,9 @@
|
||||
MESSAGE_LIST_LOCK(ml, hide_lock);
|
||||
if (ml->hidden) {
|
||||
g_hash_table_destroy (ml->hidden);
|
||||
- e_mempool_destroy (ml->hidden_pool);
|
||||
+ g_string_chunk_free (ml->hidden_string_chunk);
|
||||
ml->hidden = NULL;
|
||||
- ml->hidden_pool = NULL;
|
||||
+ ml->hidden_string_chunk = NULL;
|
||||
}
|
||||
ml->hide_before = ML_HIDE_NONE_START;
|
||||
ml->hide_after = ML_HIDE_NONE_END;
|
||||
@@ -3558,7 +3514,7 @@
|
||||
camel_file_util_decode_fixed_int32 (in, &version);
|
||||
if (version == HIDE_STATE_VERSION) {
|
||||
ml->hidden = g_hash_table_new(g_str_hash, g_str_equal);
|
||||
- ml->hidden_pool = e_mempool_new(512, 256, E_MEMPOOL_ALIGN_BYTE);
|
||||
+ ml->hidden_string_chunk = g_string_chunk_new(512);
|
||||
camel_file_util_decode_fixed_int32 (in, &lower);
|
||||
ml->hide_before = lower;
|
||||
camel_file_util_decode_fixed_int32 (in, &upper);
|
||||
@@ -3567,7 +3523,7 @@
|
||||
char *olduid, *uid;
|
||||
|
||||
if (camel_file_util_decode_string (in, &olduid) != -1) {
|
||||
- uid = e_mempool_strdup(ml->hidden_pool, olduid);
|
||||
+ uid = g_string_chunk_insert(ml->hidden_string_chunk, olduid);
|
||||
g_free (olduid);
|
||||
g_hash_table_insert(ml->hidden, uid, uid);
|
||||
}
|
||||
@@ -3717,12 +3673,12 @@
|
||||
|
||||
if (m->ml->hidden == NULL) {
|
||||
m->ml->hidden = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
- m->ml->hidden_pool = e_mempool_new (512, 256, E_MEMPOOL_ALIGN_BYTE);
|
||||
+ m->ml->hidden_string_chunk = g_string_chunk_new (512);
|
||||
}
|
||||
|
||||
for (i = 0; i < uidnew->len; i++) {
|
||||
if (g_hash_table_lookup (m->ml->hidden, uidnew->pdata[i]) == 0) {
|
||||
- char *uid = e_mempool_strdup (m->ml->hidden_pool, uidnew->pdata[i]);
|
||||
+ char *uid = g_string_chunk_insert (m->ml->hidden_string_chunk, uidnew->pdata[i]);
|
||||
g_hash_table_insert (m->ml->hidden, uid, uid);
|
||||
}
|
||||
}
|
||||
--- evolution-2.9.1/mail/message-list.h.ememory 2006-09-28 04:56:51.000000000 -0400
|
||||
+++ evolution-2.9.1/mail/message-list.h 2006-10-25 11:15:12.000000000 -0400
|
||||
@@ -102,11 +102,12 @@
|
||||
GHashTable *uid_nodemap; /* uid (from info) -> tree node mapping */
|
||||
|
||||
GHashTable *normalised_hash;
|
||||
+ GStringChunk *string_chunk;
|
||||
|
||||
/* UID's to hide. Keys in the mempool */
|
||||
/* IMPORTANT: You MUST have obtained the hide lock, to operate on this data */
|
||||
GHashTable *hidden;
|
||||
- struct _EMemPool *hidden_pool;
|
||||
+ GStringChunk *hidden_string_chunk;
|
||||
int hide_unhidden; /* total length, before hiding */
|
||||
int hide_before, hide_after; /* hide ranges of messages */
|
||||
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
--- evolution-2.9.3/calendar/gui/e-meeting-list-view.c.meeting-list-view 2006-12-11 23:13:47.000000000 -0500
|
||||
+++ evolution-2.9.3/calendar/gui/e-meeting-list-view.c 2006-12-11 23:14:17.000000000 -0500
|
||||
@@ -623,18 +623,45 @@
|
||||
|
||||
}
|
||||
|
||||
+void
|
||||
+attendee_added_cb (EMeetingStore *store, GtkTreePath *path,
|
||||
+ GtkTreeIter *iter, EMeetingListView *view)
|
||||
+{
|
||||
+ EMeetingAttendee *attendee;
|
||||
+ gint row;
|
||||
+
|
||||
+ /* Add the new attendee to the name selector. */
|
||||
+ row = gtk_tree_path_get_indices (path) [0];
|
||||
+ attendee = e_meeting_store_find_attendee_at_row (store, row);
|
||||
+ e_meeting_list_view_add_attendee_to_name_selector (view, attendee);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+attendee_deleted_cb (EMeetingStore *store, GtkTreePath *path,
|
||||
+ EMeetingListView *view)
|
||||
+{
|
||||
+ EMeetingAttendee *attendee;
|
||||
+ gint row;
|
||||
+
|
||||
+ /* Remove the old attendee from the name selector. */
|
||||
+ row = gtk_tree_path_get_indices (path) [0];
|
||||
+ attendee = e_meeting_store_find_attendee_at_row (store, row);
|
||||
+ e_meeting_list_view_remove_attendee_from_name_selector (view, attendee);
|
||||
+}
|
||||
|
||||
EMeetingListView *
|
||||
e_meeting_list_view_new (EMeetingStore *store)
|
||||
{
|
||||
- EMeetingListView *view = g_object_new (E_TYPE_MEETING_LIST_VIEW, NULL);
|
||||
+ EMeetingListView *view;
|
||||
GtkTreeSelection *selection;
|
||||
|
||||
- if (view) {
|
||||
- view->priv->store = store;
|
||||
- gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (store));
|
||||
- build_table (view);
|
||||
- }
|
||||
+ view = g_object_new (E_TYPE_MEETING_LIST_VIEW, NULL);
|
||||
+ view->priv->store = store;
|
||||
+ gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (store));
|
||||
+ build_table (view);
|
||||
+
|
||||
+ g_signal_connect (store, "row-inserted", G_CALLBACK (attendee_added_cb), view);
|
||||
+ g_signal_connect (store, "row-deleted", G_CALLBACK (attendee_deleted_cb), view);
|
||||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
|
||||
g_signal_connect (selection, "changed", G_CALLBACK (row_activated_cb), view);
|
||||
--- evolution-2.9.3/calendar/gui/e-meeting-store.c.meeting-list-view 2006-12-04 10:44:42.000000000 -0500
|
||||
+++ evolution-2.9.3/calendar/gui/e-meeting-store.c 2006-12-11 23:14:17.000000000 -0500
|
||||
@@ -794,14 +794,13 @@
|
||||
}
|
||||
|
||||
if (row != -1) {
|
||||
-
|
||||
- g_ptr_array_remove_index (store->priv->attendees, row);
|
||||
- g_object_unref (attendee);
|
||||
-
|
||||
path = gtk_tree_path_new ();
|
||||
gtk_tree_path_append_index (path, row);
|
||||
gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
|
||||
gtk_tree_path_free (path);
|
||||
+
|
||||
+ g_ptr_array_remove_index (store->priv->attendees, row);
|
||||
+ g_object_unref (attendee);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -815,10 +814,10 @@
|
||||
|
||||
for (i = 0; i < store->priv->attendees->len; i++) {
|
||||
EMeetingAttendee *attendee = g_ptr_array_index (store->priv->attendees, i);
|
||||
- g_object_unref (attendee);
|
||||
|
||||
gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
|
||||
gtk_tree_path_next (path);
|
||||
+ g_object_unref (attendee);
|
||||
}
|
||||
|
||||
g_ptr_array_set_size (store->priv->attendees, 0);
|
||||
|
|
@ -45,8 +45,8 @@
|
|||
### Abstract ###
|
||||
|
||||
Name: evolution
|
||||
Version: 2.12.1
|
||||
Release: 2%{?dist}
|
||||
Version: 2.12.3
|
||||
Release: 5%{?dist}
|
||||
License: GPLv2 and GFDL+
|
||||
Group: Applications/Productivity
|
||||
Summary: GNOME's next-generation groupware suite
|
||||
|
|
@ -98,9 +98,6 @@ Patch21: evolution-2.7.4-deleting-preedit-buffer.patch
|
|||
# GNOME bug #362638
|
||||
Patch25: evolution-2.8.1-kill-ethread.patch
|
||||
|
||||
# GNOME bug #363695
|
||||
Patch26: evolution-2.9.1-kill-ememory.patch
|
||||
|
||||
# RH bug #176400
|
||||
Patch27: evolution-2.9.1-im-context-reset.patch
|
||||
|
||||
|
|
@ -110,11 +107,9 @@ Patch27: evolution-2.9.1-im-context-reset.patch
|
|||
# RH bug #215478 / GNOME bug #383842
|
||||
Patch30: evolution-2.9.3-source-path-entry.patch
|
||||
|
||||
# RH bug #215467 / GNOME bug #380644
|
||||
Patch31: evolution-2.9.3-meeting-list-view.patch
|
||||
|
||||
# GNOME bug #376991
|
||||
Patch33: evolution-2.10.0-e-passwords.patch
|
||||
# XXX Disabled due to outstanding issues.
|
||||
#Patch33: evolution-2.10.0-e-passwords.patch
|
||||
|
||||
# GNOME bug #417999
|
||||
Patch34: evolution-2.10.0-e-source-combo-box.patch
|
||||
|
|
@ -125,6 +120,24 @@ Patch35: evolution-2.11.92-mail-attachment.patch
|
|||
# GNOME bug #477045
|
||||
Patch36: evolution-2.11.92-icon-names.patch
|
||||
|
||||
# GNOME bug #454465
|
||||
Patch37: evolution-2.12.1-source-changed-event.patch
|
||||
|
||||
# GNOME bug #351672
|
||||
Patch38: evolution-2.12.3-no-drag-finish.patch
|
||||
|
||||
# RH bug #436081 / CVE-2008-0072
|
||||
Patch39: evolution-2.12.3-CVE-2008-0072.patch
|
||||
|
||||
# GNOME bug #524310
|
||||
Patch40: evolution-2.10.3-server-message-double-free.patch
|
||||
|
||||
# RH bug #449923 / CVE-2008-1108
|
||||
Patch41: evolution-2.12.3-CVE-2008-1108.patch
|
||||
|
||||
# RH bug #449923 / CVE-2008-1109
|
||||
Patch42: evolution-2.12.3-CVE-2008-1109.patch
|
||||
|
||||
## Dependencies ###
|
||||
|
||||
Requires(post): GConf2
|
||||
|
|
@ -228,7 +241,7 @@ personal information-management tool.
|
|||
%package devel
|
||||
Group: Development/Libraries
|
||||
Summary: Development files for building against evolution
|
||||
Requires: %{name} = %{version}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: evolution-data-server-devel >= %{eds_version}
|
||||
Requires: gtkhtml3-devel >= %{gtkhtml_version}
|
||||
Requires: libsoup-devel >= %{soup_version}
|
||||
|
|
@ -259,15 +272,19 @@ This package contains the help for Evolution.
|
|||
%patch20 -p1 -b .replicated-cjk-input
|
||||
%patch21 -p1 -b .deleting-preedit-buffer
|
||||
%patch25 -p1 -b .kill-ethread
|
||||
%patch26 -p1 -b .kill-ememory
|
||||
%patch27 -p1 -b .im-context-reset
|
||||
#%patch29 -p1 -b .view-attachment-uri
|
||||
%patch30 -p1 -b .source-path-entry
|
||||
%patch31 -p1 -b .meeting-list-view
|
||||
%patch33 -p1 -b .e-passwords
|
||||
#%patch33 -p1 -b .e-passwords
|
||||
%patch34 -p1 -b .e-source-combo-box
|
||||
%patch35 -p1 -b .mail-attachment
|
||||
%patch36 -p1 -b .icon-names
|
||||
%patch37 -p1 -b .source-changed-event
|
||||
%patch38 -p1 -b .no-drag-finish
|
||||
%patch39 -p1 -b .CVE-2008-0027
|
||||
%patch40 -p1 -b .server-message-double-free
|
||||
%patch41 -p1 -b .CVE-2008-1108
|
||||
%patch42 -p1 -b .CVE-2008-1109
|
||||
|
||||
mkdir -p krb5-fakeprefix/include
|
||||
mkdir -p krb5-fakeprefix/lib
|
||||
|
|
@ -718,6 +735,42 @@ rm -rf $RPM_BUILD_ROOT
|
|||
%dir %{_datadir}/omf/evolution
|
||||
|
||||
%changelog
|
||||
* Wed Jun 04 2008 Matthew Barnes <mbarnes@redhat.com> - 2.12.3-5.fc8
|
||||
- Add patches for RH bug #449923 (buffer overflow vulnerabilities).
|
||||
|
||||
* Tue Mar 25 2008 Dan Williams <dcbw@redhat.com> - 2.12.3-4.fc8
|
||||
- Add patch for GNOME bug #524310
|
||||
|
||||
* Tue Mar 04 2008 Matthew Barnes <mbarnes@redhat.com> - 2.12.3-3.fc8
|
||||
- Add patch for CVE-2008-0072 (format string vulnerability).
|
||||
|
||||
* Mon Mar 03 2008 Milan Crha <mcrha@redhat.com> - 2.12.3-2.fc8
|
||||
- Add patch for GNOME bug #351672 (dragging IMAP messages locks X)
|
||||
|
||||
* Mon Jan 07 2008 Milan Crha <mcrha@redhat.com> - 2.12.3-1.fc8
|
||||
- Update to 2.12.3
|
||||
- Removed patch for RH bug #215467 / GNOME bug #380644 (fixed upstream).
|
||||
- Removed patch for RH bug #404591 / GNOME bug #491062 (fixed upstream).
|
||||
- Removed patch for RH bug #499920 (fixed upstream).
|
||||
- Removed patch for GNOME bug #363695 (causes issues)
|
||||
|
||||
* Thu Dec 06 2007 Matthew Barnes <mbarnes@redhat.com> - 2.12.2-3.fc8
|
||||
- Add patch for GNOME bug #499920 (invalid #include, mainly for Zimbra).
|
||||
|
||||
* Thu Nov 29 2007 Milan Crha <mcrha@redhat.com> - 2.12.2-2.fc8
|
||||
- Add patch for RH bug #404591 (do not add automatic contacts
|
||||
if disabled)
|
||||
|
||||
* Tue Nov 27 2007 Milan Crha <mcrha@redhat.com> - 2.12.2-1.fc8
|
||||
- Update to 2.12.2
|
||||
|
||||
* Fri Nov 16 2007 Milan Crha <mcrha@redhat.com> - 2.12.1-4.fc8
|
||||
- Add patch for GNOME bug #454465 (fix Save button in task dialog)
|
||||
|
||||
* Thu Oct 18 2007 Matthew Barnes <mbarnes@redhat.com> - 2.12.1-3.fc8
|
||||
- Disable patch for GNOME bug #376991 for now. It may be contributing
|
||||
to password prompting problems as described in RH bug #296671.
|
||||
|
||||
* Mon Oct 15 2007 Matthew Barnes <mbarnes@redhat.com> - 2.12.1-2.fc8
|
||||
- Fix a broken zoom icon.
|
||||
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
392623efa9b79ede17ce90512f2c3c0a evolution-2.12.1.tar.bz2
|
||||
554698d7387aee82c5f4d4520760503d evolution-2.12.3.tar.bz2
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue