Compare commits

...
Sign in to create a new pull request.

16 commits

Author SHA1 Message Date
Fedora Release Engineering
e5b59f011f dist-git conversion 2010-07-28 13:59:23 +00:00
Bill Nottingham
f8a08bb19b Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-26 01:25:59 +00:00
Matthew Barnes
7c492b3389 Fix the date 2008-06-04 10:06:30 +00:00
Matthew Barnes
e3da36e36e - Add patches for RH bug #449923 (buffer overflow vulnerabilities). 2008-06-04 09:57:32 +00:00
Matthew Barnes
4f74dc449f Fix some minor rpmdiff complaints. 2008-05-30 12:30:56 +00:00
Daniel Williams
a7dcc278dc - Add patch for GNOME bug #524310 2008-03-25 15:06:28 +00:00
Matthew Barnes
a31a9c3eca Add a Bugzilla reference for CVE-2008-0072. 2008-03-05 15:41:01 +00:00
Matthew Barnes
b1284d5727 - Add patch for CVE-2008-0072 (format string vulnerability). 2008-03-05 15:11:19 +00:00
Milan Crha
8419f5803c - Add patch for GNOME bug #351672 (dragging IMAP messages locks X) 2008-03-03 18:25:07 +00:00
Milan Crha
f3686316a2 - 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)
2008-01-07 17:31:48 +00:00
Matthew Barnes
56e27484b7 - Add patch for GNOME bug #499920 (invalid #include, mainly for Zimbra). 2007-12-06 20:45:54 +00:00
Milan Crha
0a2d680bd1 - Add patch for RH bug #404591 (do not add automatic contacts if disabled) 2007-11-29 19:31:56 +00:00
Milan Crha
4a1fc8f40b - Update to 2.12.2 2007-11-27 12:18:33 +00:00
Milan Crha
1317f5eb91 - Add patch for GNOME bug #454465 (fix Save button in task dialog) 2007-11-16 18:36:19 +00:00
Matthew Barnes
5cdd21ea26 - Disable patch for GNOME bug #376991 for now. It may be contributing to
password prompting problems as described in RH bug #296671.
2007-10-18 18:05:35 +00:00
Kevin Fenzi
991b1c955a Initialize branch F-8 for evolution 2007-10-16 22:23:29 +00:00
15 changed files with 953 additions and 831 deletions

View file

@ -1 +0,0 @@
evolution-2.12.1.tar.bz2

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
evolution-2.12.3.tar.bz2

View file

@ -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)

View file

@ -255,15 +255,6 @@ diff -up evolution-2.12.0/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.12.
int int
e_plugin_lib_enable (EPluginLib *ep, int enable) 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 @@ -345,8 +382,23 @@ enable_toggled_cb (GtkWidget *widget, gp
gtk_widget_set_sensitive (stuff->option_menu, active); gtk_widget_set_sensitive (stuff->option_menu, active);

View 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;
}

View 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"

View 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);

View 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

View 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 *

View 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

View file

@ -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 */

View file

@ -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);

View file

@ -45,8 +45,8 @@
### Abstract ### ### Abstract ###
Name: evolution Name: evolution
Version: 2.12.1 Version: 2.12.3
Release: 2%{?dist} Release: 5%{?dist}
License: GPLv2 and GFDL+ License: GPLv2 and GFDL+
Group: Applications/Productivity Group: Applications/Productivity
Summary: GNOME's next-generation groupware suite Summary: GNOME's next-generation groupware suite
@ -98,9 +98,6 @@ Patch21: evolution-2.7.4-deleting-preedit-buffer.patch
# GNOME bug #362638 # GNOME bug #362638
Patch25: evolution-2.8.1-kill-ethread.patch Patch25: evolution-2.8.1-kill-ethread.patch
# GNOME bug #363695
Patch26: evolution-2.9.1-kill-ememory.patch
# RH bug #176400 # RH bug #176400
Patch27: evolution-2.9.1-im-context-reset.patch 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 # RH bug #215478 / GNOME bug #383842
Patch30: evolution-2.9.3-source-path-entry.patch 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 # 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 # GNOME bug #417999
Patch34: evolution-2.10.0-e-source-combo-box.patch 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 # GNOME bug #477045
Patch36: evolution-2.11.92-icon-names.patch 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 ### ## Dependencies ###
Requires(post): GConf2 Requires(post): GConf2
@ -228,7 +241,7 @@ personal information-management tool.
%package devel %package devel
Group: Development/Libraries Group: Development/Libraries
Summary: Development files for building against evolution Summary: Development files for building against evolution
Requires: %{name} = %{version} Requires: %{name} = %{version}-%{release}
Requires: evolution-data-server-devel >= %{eds_version} Requires: evolution-data-server-devel >= %{eds_version}
Requires: gtkhtml3-devel >= %{gtkhtml_version} Requires: gtkhtml3-devel >= %{gtkhtml_version}
Requires: libsoup-devel >= %{soup_version} Requires: libsoup-devel >= %{soup_version}
@ -259,15 +272,19 @@ This package contains the help for Evolution.
%patch20 -p1 -b .replicated-cjk-input %patch20 -p1 -b .replicated-cjk-input
%patch21 -p1 -b .deleting-preedit-buffer %patch21 -p1 -b .deleting-preedit-buffer
%patch25 -p1 -b .kill-ethread %patch25 -p1 -b .kill-ethread
%patch26 -p1 -b .kill-ememory
%patch27 -p1 -b .im-context-reset %patch27 -p1 -b .im-context-reset
#%patch29 -p1 -b .view-attachment-uri #%patch29 -p1 -b .view-attachment-uri
%patch30 -p1 -b .source-path-entry %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 %patch34 -p1 -b .e-source-combo-box
%patch35 -p1 -b .mail-attachment %patch35 -p1 -b .mail-attachment
%patch36 -p1 -b .icon-names %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/include
mkdir -p krb5-fakeprefix/lib mkdir -p krb5-fakeprefix/lib
@ -718,6 +735,42 @@ rm -rf $RPM_BUILD_ROOT
%dir %{_datadir}/omf/evolution %dir %{_datadir}/omf/evolution
%changelog %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 * Mon Oct 15 2007 Matthew Barnes <mbarnes@redhat.com> - 2.12.1-2.fc8
- Fix a broken zoom icon. - Fix a broken zoom icon.

View file

@ -1 +1 @@
392623efa9b79ede17ce90512f2c3c0a evolution-2.12.1.tar.bz2 554698d7387aee82c5f4d4520760503d evolution-2.12.3.tar.bz2