Hello community, here is the log from the commit of package evolution-data-server checked in at Fri Apr 7 16:41:23 CEST 2006. -------- --- GNOME/evolution-data-server/evolution-data-server.changes 2006-04-05 10:39:01.000000000 +0200 +++ evolution-data-server/evolution-data-server.changes 2006-04-07 09:06:26.000000000 +0200 @@ -2 +2,16 @@ -Wed Apr 5 10:38:02 CEST 2006 - vvaradhan@novell.com +Fri Apr 7 08:41:09 CEST 2006 - vvaradhan@novell.com + +- Fixes (bnc) + 163664 E-D-S crashes if a contact has invalid UTF-8 - Federico + +------------------------------------------------------------------- +Wed Apr 5 14:15:31 CEST 2006 - vvaradhan@novell.com + +- Fixes (bnc) + 161290 EDS crashed while forwarding a mail - Devashish + 162005 evolution-data-server crashed when deleting a recurring + appointment in my groupwise calendar - Chenthill +- Disable beagle-meta-summary patch + +------------------------------------------------------------------- +Tue Apr 4 10:27:29 CEST 2006 - vvaradhan@novell.com New: ---- bnc-161290-eds-crashed-forwarding-mail.patch bnc-162005-e-d-s-crash-deleting-recur-appt.patch bnc-163664-eds-crashes-on-invalid-utf8-contacts.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ evolution-data-server.spec ++++++ --- /var/tmp/diff_new_pack.duNYbx/_old 2006-04-07 16:41:12.000000000 +0200 +++ /var/tmp/diff_new_pack.duNYbx/_new 2006-04-07 16:41:12.000000000 +0200 @@ -18,7 +18,7 @@ Autoreqprov: on Summary: Evolution Data Server Version: 1.6.0 -Release: 14 +Release: 16 Source: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/1.6/%{name}-%{version}.tar.bz2 #Patch3: evolution-data-server-gcc4.patch Patch5: evolution-data-server-configure.patch @@ -54,6 +54,9 @@ Patch33: bnc-160147-cant-delete-created-calendar-accounts.patch Patch34: bnc-161000-junk-mail-dont-work.patch Patch35: gw-proxy-issues.patch +Patch36: bnc-161290-eds-crashed-forwarding-mail.patch +Patch37: bnc-162005-e-d-s-crash-deleting-recur-appt.patch +Patch38: bnc-163664-eds-crashes-on-invalid-utf8-contacts.patch Url: http://www.gnome.org BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: libsoup >= 2.2.6 mozilla-nss @@ -97,7 +100,7 @@ %patch11 %patch12 %patch13 -%patch14 +#%patch14 %patch15 %patch16 %patch17 @@ -119,6 +122,9 @@ %patch33 %patch34 %patch35 +%patch36 +%patch37 +%patch38 %build rename no nb po/no.* @@ -168,7 +174,16 @@ %{prefix}/share/gtk-doc/html/* %changelog -n evolution-data-server +* Fri Apr 07 2006 - vvaradhan@novell.com +- Fixes (bnc) + 163664 E-D-S crashes if a contact has invalid UTF-8 - Federico * Wed Apr 05 2006 - vvaradhan@novell.com +- Fixes (bnc) + 161290 EDS crashed while forwarding a mail - Devashish + 162005 evolution-data-server crashed when deleting a recurring + appointment in my groupwise calendar - Chenthill +- Disable beagle-meta-summary patch +* Tue Apr 04 2006 - vvaradhan@novell.com - Updated bnc-158107-no-notification-canceled-mtgs.patch - Fixes sending user specified comments during cancellation of meetings. - Fixes (bnc) ++++++ bnc-161290-eds-crashed-forwarding-mail.patch ++++++ Index: addressbook/backends/groupwise/e-book-backend-groupwise.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c,v retrieving revision 1.73 diff -u -p -r1.73 e-book-backend-groupwise.c --- addressbook/backends/groupwise/e-book-backend-groupwise.c 23 Mar 2006 10:55:47 -0000 1.73 +++ addressbook/backends/groupwise/e-book-backend-groupwise.c 3 Apr 2006 13:18:36 -0000 @@ -70,11 +70,11 @@ struct _EBookBackendGroupwisePrivate { int cache_timeout; EBookBackendCache *cache; EBookBackendSummary *summary; + GMutex *update_mutex; /* for future use */ void *reserved1; void *reserved2; void *reserved3; - void *reserved4; }; #define ELEMENT_TYPE_SIMPLE 0x01 @@ -2711,6 +2711,8 @@ update_address_book_deltas (EBookBackend EBookBackendGroupwisePrivate *priv = ebgw->priv; EBookBackendCache *cache = priv->cache; + + g_mutex_lock (priv->update_mutex); if (enable_debug) printf("\nupdating GroupWise system address book cache \n"); @@ -2724,6 +2726,7 @@ update_address_book_deltas (EBookBackend if (status != E_GW_CONNECTION_STATUS_OK) { if (enable_debug) printf("No connection with the server \n"); + g_mutex_unlock(priv->update_mutex); return FALSE; } @@ -2733,6 +2736,7 @@ update_address_book_deltas (EBookBackend if (enable_debug) printf ("sequence is reset, rebuilding cache...\n"); build_cache (ebgw); + g_mutex_unlock(priv->update_mutex); return TRUE; } @@ -2754,6 +2758,7 @@ update_address_book_deltas (EBookBackend build_cache (ebgw); add_sequence_to_cache (cache, server_first_sequence, server_last_sequence, server_last_po_rebuild_time); + g_mutex_unlock(priv->update_mutex); return TRUE; } @@ -2926,6 +2931,7 @@ update_address_book_deltas (EBookBackend printf("updating GroupWise system address book cache took %ld.%03ld seconds for %d changes\n", diff / 1000, diff % 1000, contact_num); } + g_mutex_unlock(priv->update_mutex); return TRUE; } @@ -3427,6 +3433,8 @@ e_book_backend_groupwise_dispose (GObjec g_source_remove (bgw->priv->cache_timeout); bgw->priv->cache_timeout = 0; } + if (bgw->priv->update_mutex) + g_mutex_free(bgw->priv->update_mutex); g_free (bgw->priv); bgw->priv = NULL; @@ -3485,10 +3493,10 @@ e_book_backend_groupwise_init (EBookBack priv->cnc = NULL; priv->original_uri = NULL; priv->cache_timeout = 0; + priv->update_mutex = g_mutex_new(); priv->reserved1 = NULL; priv->reserved2 = NULL; priv->reserved3 = NULL; - priv->reserved4 = NULL; backend->priv = priv; if (g_getenv ("GROUPWISE_DEBUG")) { ++++++ bnc-162005-e-d-s-crash-deleting-recur-appt.patch ++++++ Index: calendar/backends/groupwise/e-cal-backend-groupwise.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise.c,v retrieving revision 1.174 diff -u -p -r1.174 e-cal-backend-groupwise.c --- calendar/backends/groupwise/e-cal-backend-groupwise.c 3 Apr 2006 08:36:44 -0000 1.174 +++ calendar/backends/groupwise/e-cal-backend-groupwise.c 5 Apr 2006 06:17:11 -0000 @@ -1839,7 +1839,7 @@ e_cal_backend_groupwise_modify_object (E ECalComponent *comp, *cache_comp = NULL; EGwConnectionStatus status; EGwItem *item, *cache_item; - const char *uid = NULL; + const char *uid = NULL, *rid = NULL; *old_object = NULL; cbgw = E_CAL_BACKEND_GROUPWISE (backend); @@ -1861,13 +1861,14 @@ e_cal_backend_groupwise_modify_object (E comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomp); e_cal_component_get_uid (comp, &uid); + rid = e_cal_component_get_recurid_as_string (comp); /* check if the object exists */ switch (priv->mode) { case CAL_MODE_ANY : case CAL_MODE_REMOTE : /* when online, send the item to the server */ - cache_comp = e_cal_backend_cache_get_component (priv->cache, uid, NULL); + cache_comp = e_cal_backend_cache_get_component (priv->cache, uid, rid); if (!cache_comp) { g_message ("CRITICAL : Could not find the object in cache"); return GNOME_Evolution_Calendar_ObjectNotFound; @@ -2070,7 +2071,7 @@ e_cal_backend_groupwise_remove_object (E e_cal_backend_cache_remove_component (priv->cache, id->uid, id->rid); - if (!g_str_equal (id->rid, rid)) + if (!id->rid || !g_str_equal (id->rid, rid)) e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id, e_cal_component_get_as_string (comp), NULL); e_cal_component_free_id (id); ++++++ bnc-163664-eds-crashes-on-invalid-utf8-contacts.patch ++++++ --- addressbook/libebook/e-vcard.c.orig 2006-04-04 20:53:02.000000000 -0500 +++ addressbook/libebook/e-vcard.c 2006-04-04 20:56:55.000000000 -0500 @@ -541,6 +541,45 @@ read_attribute (char **p) return NULL; } +/* Stolen from glib/glib/gconvert.c */ +static gchar * +make_valid_utf8 (const gchar *name) +{ + GString *string; + const gchar *remainder, *invalid; + gint remaining_bytes, valid_bytes; + + string = NULL; + remainder = name; + remaining_bytes = strlen (name); + + while (remaining_bytes != 0) + { + if (g_utf8_validate (remainder, remaining_bytes, &invalid)) + break; + valid_bytes = invalid - remainder; + + if (string == NULL) + string = g_string_sized_new (remaining_bytes); + + g_string_append_len (string, remainder, valid_bytes); + /* append U+FFFD REPLACEMENT CHARACTER */ + g_string_append (string, "\357\277\275"); + + remaining_bytes -= valid_bytes + 1; + remainder = invalid + 1; + } + + if (string == NULL) + return g_strdup (name); + + g_string_append (string, remainder); + + g_assert (g_utf8_validate (string->str, -1, NULL)); + + return g_string_free (string, FALSE); +} + /* we try to be as forgiving as we possibly can here - this isn't a * validator. Almost nothing is considered a fatal error. We always * try to return *something*. @@ -548,17 +587,12 @@ read_attribute (char **p) static void parse (EVCard *evc, const char *str) { - char *buf = g_strdup (str); - char *p, *end; + char *buf; + char *p; EVCardAttribute *attr; - /* first validate the string is valid utf8 */ - if (!g_utf8_validate (buf, -1, (const char **)&end)) { - /* if the string isn't valid, we parse as much as we can from it */ - g_warning ("invalid utf8 passed to EVCard. Limping along."); - *end = '\0'; - } - + buf = make_valid_utf8 (str); + buf = fold_lines (buf); d(printf ("BEFORE FOLDING:\n")); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...