rpms/evolution-data-server/F-10 evolution-data-server-2.24.5-caldav-leak-fix.patch, NONE, 1.1 evolution-data-server-2.24.5-display-smime-sign-and-encrypt.patch, NONE, 1.1 evolution-data-server.spec, 1.248, 1.249
Matthew Barnes
mbarnes at fedoraproject.org
Mon Apr 6 13:59:54 UTC 2009
Author: mbarnes
Update of /cvs/pkgs/rpms/evolution-data-server/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3231
Modified Files:
evolution-data-server.spec
Added Files:
evolution-data-server-2.24.5-caldav-leak-fix.patch
evolution-data-server-2.24.5-display-smime-sign-and-encrypt.patch
Log Message:
* Mon Apr 06 2009 Matthew Barnes <mbarnes at redhat.com> - 2.25.5-5.fc10
- Add patch for RH bug #492852 (fix S/MIME signature verification).
- Add patch for GNOME bug #573187 (CalDAV memory leaks).
evolution-data-server-2.24.5-caldav-leak-fix.patch:
--- NEW FILE evolution-data-server-2.24.5-caldav-leak-fix.patch ---
diff -up evolution-data-server-2.24.5/calendar/backends/caldav/e-cal-backend-caldav.c.caldav-leak-fix evolution-data-server-2.24.5/calendar/backends/caldav/e-cal-backend-caldav.c
--- evolution-data-server-2.24.5/calendar/backends/caldav/e-cal-backend-caldav.c.caldav-leak-fix 2009-01-29 13:55:21.000000000 +0100
+++ evolution-data-server-2.24.5/calendar/backends/caldav/e-cal-backend-caldav.c 2009-04-02 13:24:32.000000000 +0200
@@ -123,6 +123,7 @@ struct _ECalBackendCalDAVPrivate {
#define DEBUG_MESSAGE "message"
#define DEBUG_MESSAGE_HEADER "message:header"
#define DEBUG_MESSAGE_BODY "message:body"
+#define DEBUG_SERVER_ITEMS "items"
static gboolean caldav_debug_all = FALSE;
static GHashTable *caldav_debug_table = NULL;
@@ -151,7 +152,7 @@ add_debug_key (const char *start, const
debug_key,
debug_value);
- g_debug ("Adding %s to enabled debugging keys", debug_key);
+ d(g_debug ("Adding %s to enabled debugging keys", debug_key));
}
static gpointer
@@ -164,7 +165,7 @@ caldav_debug_init_once (gpointer data)
if (dbg) {
const char *ptr;
- g_debug ("Got debug env variable: [%s]", dbg);
+ d(g_debug ("Got debug env variable: [%s]", dbg));
caldav_debug_table = g_hash_table_new (g_str_hash,
g_str_equal);
@@ -199,7 +200,7 @@ caldav_debug_init_once (gpointer data)
}
static void
-caldav_debug_init ()
+caldav_debug_init (void)
{
static GOnce debug_once = G_ONCE_INIT;
@@ -237,7 +238,7 @@ caldav_debug_setup (SoupSession *session
level = SOUP_LOGGER_LOG_MINIMAL;
logger = soup_logger_new (level, DEBUG_MAX_BODY_SIZE);
- soup_logger_attach (logger, session);
+ soup_session_add_feature (session, SOUP_SESSION_FEATURE (logger));
g_object_unref (logger);
}
@@ -309,7 +310,10 @@ e_cal_component_set_href (ECalComponent
{
icalcomponent *icomp;
+ g_return_if_fail (href != NULL);
+
icomp = e_cal_component_get_icalcomponent (comp);
+ g_return_if_fail (icomp != NULL);
icomp_x_prop_set (icomp, X_E_CALDAV "HREF", href);
}
@@ -322,6 +326,7 @@ e_cal_component_get_href (ECalComponent
str = NULL;
icomp = e_cal_component_get_icalcomponent (comp);
+ g_return_val_if_fail (icomp != NULL, NULL);
str = icomp_x_prop_get (icomp, X_E_CALDAV "HREF");
@@ -334,11 +339,12 @@ e_cal_component_set_etag (ECalComponent
{
icalcomponent *icomp;
+ g_return_if_fail (etag != NULL);
+
icomp = e_cal_component_get_icalcomponent (comp);
+ g_return_if_fail (icomp != NULL);
icomp_x_prop_set (icomp, X_E_CALDAV "ETAG", etag);
-
-
}
static char *
@@ -349,6 +355,7 @@ e_cal_component_get_etag (ECalComponent
str = NULL;
icomp = e_cal_component_get_icalcomponent (comp);
+ g_return_val_if_fail (icomp != NULL, NULL);
str = icomp_x_prop_get (icomp, X_E_CALDAV "ETAG");
@@ -542,13 +549,14 @@ parse_status_node (xmlNodePtr node, guin
static char *
xp_object_get_string (xmlXPathObjectPtr result)
{
- char *ret;
+ char *ret = NULL;
- if (result == NULL || result->type != XPATH_STRING) {
- return NULL;
- }
+ if (result == NULL)
+ return ret;
- ret = g_strdup ((char *) result->stringval);
+ if (result->type == XPATH_STRING) {
+ ret = g_strdup ((char *) result->stringval);
+ }
xmlXPathFreeObject (result);
return ret;
@@ -559,23 +567,26 @@ xp_object_get_string (xmlXPathObjectPtr
static char *
xp_object_get_href (xmlXPathObjectPtr result)
{
- char *ret;
+ char *ret = NULL;
char *val;
- if (result == NULL || result->type != XPATH_STRING) {
- return NULL;
- }
+ if (result == NULL)
+ return ret;
- val = (char *) result->stringval;
+ if (result->type == XPATH_STRING) {
+ val = (char *) result->stringval;
- if ((ret = g_strrstr (val, "/")) == NULL) {
- ret = val;
- } else {
- ret++; /* skip the unwanted "/" */
- }
+ if ((ret = g_strrstr (val, "/")) == NULL) {
+ ret = val;
+ } else {
+ ret++; /* skip the unwanted "/" */
+ }
- ret = g_strdup (ret);
- d(g_debug ("found href: %s", ret));
+ ret = g_strdup (ret);
+
+ if (caldav_debug_show (DEBUG_SERVER_ITEMS))
+ printf ("CalDAV found href: %s\n", ret);
+ }
xmlXPathFreeObject (result);
return ret;
@@ -585,16 +596,17 @@ xp_object_get_href (xmlXPathObjectPtr re
static char *
xp_object_get_etag (xmlXPathObjectPtr result)
{
- char *ret;
+ char *ret = NULL;
char *str;
- if (result == NULL || result->type != XPATH_STRING) {
- return NULL;
- }
+ if (result == NULL)
+ return ret;
- str = (char *) result->stringval;
+ if (result->type == XPATH_STRING) {
+ str = (char *) result->stringval;
- ret = quote_etag (str);
+ ret = quote_etag (str);
+ }
xmlXPathFreeObject (result);
return ret;
@@ -604,20 +616,20 @@ static guint
xp_object_get_status (xmlXPathObjectPtr result)
{
gboolean res;
- guint ret;
-
+ guint ret = 0;
- if (result == NULL || result->type != XPATH_STRING) {
- return 0;
- }
+ if (result == NULL)
+ return ret;
- res = soup_headers_parse_status_line ((char *) result->stringval,
- NULL,
- &ret,
- NULL);
+ if (result->type == XPATH_STRING) {
+ res = soup_headers_parse_status_line ((char *) result->stringval,
+ NULL,
+ &ret,
+ NULL);
- if (res != TRUE) {
- ret = 0;
+ if (!res) {
+ ret = 0;
+ }
}
xmlXPathFreeObject (result);
@@ -628,13 +640,14 @@ xp_object_get_status (xmlXPathObjectPtr
static int
xp_object_get_number (xmlXPathObjectPtr result)
{
- int ret;
+ int ret = -1;
- if (result == NULL || result->type != XPATH_STRING) {
- return -1;
- }
+ if (result == NULL)
+ return ret;
- ret = result->boolval;
+ if (result->type == XPATH_STRING) {
+ ret = result->boolval;
+ }
xmlXPathFreeObject (result);
return ret;
@@ -750,6 +763,8 @@ parse_report_response (SoupMessage *soup
}
out:
+ if (result != NULL)
+ xmlXPathFreeObject (result);
xmlXPathFreeContext (xpctx);
xmlFreeDoc (doc);
return res;
@@ -928,6 +943,8 @@ caldav_server_open_calendar (ECalBackend
/* FIXME: setup text_uri */
message = soup_message_new (SOUP_METHOD_OPTIONS, priv->uri);
+ if (message == NULL)
+ return GNOME_Evolution_Calendar_NoSuchCal;
soup_message_headers_append (message->request_headers,
"User-Agent", "Evolution/" VERSION);
@@ -985,14 +1002,18 @@ caldav_server_list_objects (ECalBackendC
gboolean result;
priv = E_CAL_BACKEND_CALDAV_GET_PRIVATE (cbdav);
+ /* Allocate the soup message */
+ message = soup_message_new ("REPORT", priv->uri);
+ if (message == NULL)
+ return FALSE;
/* Maybe we should just do a g_strdup_printf here? */
/* Prepare request body */
doc = xmlNewDoc ((xmlChar *) "1.0");
- root = xmlNewNode (NULL, (xmlChar *) "calendar-query");
- nscd = xmlNewNs (root, (xmlChar *) "urn:ietf:params:xml:ns:caldav",
- (xmlChar *) "C");
+ root = xmlNewDocNode (doc, NULL, (xmlChar *) "calendar-query", NULL);
+ nscd = xmlNewNs (root, (xmlChar *) "urn:ietf:params:xml:ns:caldav", (xmlChar *) "C");
xmlSetNs (root, nscd);
+ xmlDocSetRootElement (doc, root);
/* Add webdav tags */
nsdav = xmlNewNs (root, (xmlChar *) "DAV:", (xmlChar *) "D");
@@ -1013,7 +1034,6 @@ caldav_server_list_objects (ECalBackendC
xmlOutputBufferFlush (buf);
/* Prepare the soup message */
- message = soup_message_new ("REPORT", priv->uri);
soup_message_headers_append (message->request_headers,
"User-Agent", "Evolution/" VERSION);
soup_message_headers_append (message->request_headers,
@@ -1034,7 +1054,9 @@ caldav_server_list_objects (ECalBackendC
/* Check the result */
if (message->status_code != 207) {
- g_warning ("Sever did not response with 207, but with code %d\n", message->status_code);
+ g_warning ("Server did not response with 207, but with code %d (%s)", message->status_code, soup_status_get_phrase (message->status_code) ? soup_status_get_phrase (message->status_code) : "Unknown code");
+
+ g_object_unref (message);
return FALSE;
}
@@ -1062,18 +1084,23 @@ caldav_server_get_object (ECalBackendCal
uri = caldav_generate_uri (cbdav, object->href);
message = soup_message_new (SOUP_METHOD_GET, uri);
- g_free (uri);
+ if (message == NULL) {
+ g_free (uri);
+ return GNOME_Evolution_Calendar_NoSuchCal;
+ }
soup_message_headers_append (message->request_headers,
"User-Agent", "Evolution/" VERSION);
send_and_handle_redirection (priv->session, message, NULL);
- if (! SOUP_STATUS_IS_SUCCESSFUL (message->status_code)) {
- result = status_code_to_result (message->status_code);
+ if (!SOUP_STATUS_IS_SUCCESSFUL (message->status_code)) {
+ guint status_code = message->status_code;
g_object_unref (message);
- g_warning ("Could not fetch object from server\n");
- return result;
+
+ g_warning ("Could not fetch object '%s' from server, status:%d (%s)", uri, status_code, soup_status_get_phrase (status_code) ? soup_status_get_phrase (status_code) : "Unknown code");
+ g_free (uri);
+ return status_code_to_result (status_code);
}
hdr = soup_message_headers_get (message->response_headers, "Content-Type");
@@ -1081,7 +1108,8 @@ caldav_server_get_object (ECalBackendCal
if (hdr == NULL || g_ascii_strncasecmp (hdr, "text/calendar", 13)) {
result = GNOME_Evolution_Calendar_InvalidObject;
g_object_unref (message);
- g_warning ("Object to fetch not of type text/calendar");
+ g_warning ("Object to fetch '%s' not of type text/calendar", uri);
+ g_free (uri);
return result;
}
@@ -1091,8 +1119,9 @@ caldav_server_get_object (ECalBackendCal
g_free (object->etag);
object->etag = quote_etag (hdr);
} else if (!object->etag) {
- g_warning ("UUHH no ETag, now that's bad!");
+ g_warning ("UUHH no ETag, now that's bad! (at '%s')", uri);
}
+ g_free (uri);
g_free (object->cdata);
object->cdata = g_strdup (message->response_body->data);
@@ -1119,6 +1148,8 @@ caldav_server_put_object (ECalBackendCal
uri = caldav_generate_uri (cbdav, object->href);
message = soup_message_new (SOUP_METHOD_PUT, uri);
g_free (uri);
+ if (message == NULL)
+ return GNOME_Evolution_Calendar_NoSuchCal;
soup_message_headers_append (message->request_headers,
"User-Agent", "Evolution/" VERSION);
@@ -1159,15 +1190,25 @@ caldav_server_put_object (ECalBackendCal
result = status_code_to_result (message->status_code);
if (result == GNOME_Evolution_Calendar_Success) {
- hdr = soup_message_headers_get (message->response_headers,
- "ETag");
- }
+ hdr = soup_message_headers_get (message->response_headers, "ETag");
+ if (hdr != NULL) {
+ g_free (object->etag);
+ object->etag = quote_etag (hdr);
+ } else {
+ /* no ETag header returned, check for it with a GET */
+ hdr = soup_message_headers_get (message->response_headers, "Location");
+ if (hdr) {
+ /* reflect possible href change first */
+ char *file = strrchr (hdr, '/');
+
+ if (file) {
+ g_free (object->href);
+ object->href = soup_uri_encode (file + 1, NULL);
+ }
+ }
- if (hdr != NULL) {
- g_free (object->etag);
- object->etag = quote_etag (hdr);
- } else {
- g_warning ("Ups no Etag in put response");
+ result = caldav_server_get_object (cbdav, object);
+ }
}
g_object_unref (message);
@@ -1190,6 +1231,8 @@ caldav_server_delete_object (ECalBackend
uri = caldav_generate_uri (cbdav, object->href);
message = soup_message_new (SOUP_METHOD_DELETE, uri);
g_free (uri);
+ if (message == NULL)
+ return GNOME_Evolution_Calendar_NoSuchCal;
soup_message_headers_append (message->request_headers,
"User-Agent", "Evolution/" VERSION);
@@ -1230,10 +1273,8 @@ synchronize_object (ECalBackendCalDAV *c
res = TRUE;
result = caldav_server_get_object (cbdav, object);
- if (result != GNOME_Evolution_Calendar_Success) {
- g_warning ("Could not fetch object from server");
+ if (result != GNOME_Evolution_Calendar_Success)
return FALSE;
- }
priv = E_CAL_BACKEND_CALDAV_GET_PRIVATE (cbdav);
@@ -1242,31 +1283,34 @@ synchronize_object (ECalBackendCalDAV *c
bkend = E_CAL_BACKEND (cbdav);
if (kind == ICAL_VCALENDAR_COMPONENT) {
-
kind = e_cal_backend_get_kind (bkend);
subcomp = icalcomponent_get_first_component (icomp, kind);
- comp = e_cal_component_new ();
- res = e_cal_component_set_icalcomponent (comp,
+ if (!subcomp) {
+ res = FALSE;
+ } else {
+ comp = e_cal_component_new ();
+ res = e_cal_component_set_icalcomponent (comp,
icalcomponent_new_clone (subcomp));
- if (res == TRUE) {
- icaltimezone *zone = icaltimezone_new ();
+ if (res) {
+ icaltimezone *zone = icaltimezone_new ();
- e_cal_component_set_href (comp, object->href);
- e_cal_component_set_etag (comp, object->etag);
+ e_cal_component_set_href (comp, object->href);
+ e_cal_component_set_etag (comp, object->etag);
- for (subcomp = icalcomponent_get_first_component (icomp, ICAL_VTIMEZONE_COMPONENT);
- subcomp;
- subcomp = icalcomponent_get_next_component (icomp, ICAL_VTIMEZONE_COMPONENT)) {
- /* copy timezones of the component to our cache to have it available later */
- if (icaltimezone_set_component (zone, subcomp))
- e_cal_backend_cache_put_timezone (priv->cache, zone);
- }
+ for (subcomp = icalcomponent_get_first_component (icomp, ICAL_VTIMEZONE_COMPONENT);
+ subcomp;
+ subcomp = icalcomponent_get_next_component (icomp, ICAL_VTIMEZONE_COMPONENT)) {
+ /* copy timezones of the component to our cache to have it available later */
+ if (icaltimezone_set_component (zone, subcomp))
+ e_cal_backend_cache_put_timezone (priv->cache, zone);
+ }
- icaltimezone_free (zone, TRUE);
- } else {
- g_object_unref (comp);
- comp = NULL;
+ icaltimezone_free (zone, TRUE);
+ } else {
+ g_object_unref (comp);
+ comp = NULL;
+ }
}
} else {
res = FALSE;
@@ -1367,8 +1411,10 @@ synchronize_cache (ECalBackendCalDAV *cb
res = synchronize_object (cbdav, object, ccomp, &created, &modified);
}
- if (res == TRUE) {
+ if (res) {
cobjs = g_list_remove (cobjs, ccomp);
+ if (ccomp)
+ g_object_unref (ccomp);
}
caldav_object_free (object, FALSE);
@@ -1475,6 +1521,8 @@ synch_slave_loop (gpointer data)
/* signal we are done */
g_cond_signal (priv->slave_gone_cond);
+ priv->synch_slave = NULL;
+
/* we got killed ... */
g_mutex_unlock (priv->lock);
return NULL;
@@ -1570,14 +1618,13 @@ initialize_backend (ECalBackendCalDAV *c
}
os_val = e_source_get_property (source, "auth");
-
- if (os_val) {
- priv->need_auth = TRUE;
- }
+ priv->need_auth = os_val != NULL;
os_val = e_source_get_property(source, "ssl");
uri = e_cal_backend_get_uri (E_CAL_BACKEND (cbdav));
+ g_free (priv->uri);
+ priv->uri = NULL;
if (g_str_has_prefix (uri, "caldav://")) {
const char *proto;
@@ -1756,6 +1803,7 @@ pack_cobj (ECalBackendCalDAV *cbdav, ECa
}
objstr = icalcomponent_as_ical_string (calcomp);
+ icalcomponent_free (calcomp);
g_assert (objstr);
@@ -1853,7 +1901,6 @@ caldav_create_object (ECalBackendSync *
if (online) {
CalDAVObject object;
- const char *id = NULL;
href = e_cal_component_gen_href (comp);
@@ -1862,12 +1909,12 @@ caldav_create_object (ECalBackendSync *
object.cdata = pack_cobj (cbdav, comp);
status = caldav_server_put_object (cbdav, &object);
+ if (status == GNOME_Evolution_Calendar_Success) {
+ e_cal_component_set_href (comp, object.href);
+ e_cal_component_set_etag (comp, object.etag);
+ }
- e_cal_component_get_uid (comp, &id);
- e_cal_component_set_href (comp, object.href);
- e_cal_component_set_etag (comp, object.etag);
caldav_object_free (&object, FALSE);
-
} else {
/* mark component as out of synch */
e_cal_component_set_synch_state (comp,
@@ -1949,11 +1996,12 @@ caldav_modify_object (ECalBackendSync *
object.cdata = pack_cobj (cbdav, comp);
status = caldav_server_put_object (cbdav, &object);
+ if (status == GNOME_Evolution_Calendar_Success) {
+ e_cal_component_set_href (comp, object.href);
+ e_cal_component_set_etag (comp, object.etag);
+ }
- e_cal_component_set_href (comp, object.href);
- e_cal_component_set_etag (comp, object.etag);
caldav_object_free (&object, FALSE);
-
} else {
/* mark component as out of synch */
e_cal_component_set_synch_state (comp,
@@ -2032,8 +2080,10 @@ caldav_remove_object (ECalBackendSync *
caldav_object.cdata = pack_cobj (cbdav, cache_comp);
status = caldav_server_put_object (cbdav, &caldav_object);
- e_cal_component_set_href (cache_comp, caldav_object.href);
- e_cal_component_set_etag (cache_comp, caldav_object.etag);
+ if (status == GNOME_Evolution_Calendar_Success) {
+ e_cal_component_set_href (cache_comp, caldav_object.href);
+ e_cal_component_set_etag (cache_comp, caldav_object.etag);
+ }
} else
status = caldav_server_delete_object (cbdav, &caldav_object);
@@ -2258,11 +2308,11 @@ process_object (ECalBackendCalDAV *cbd
rid);
id = e_cal_component_get_id (ccomp);
-
e_cal_backend_notify_object_removed (E_CAL_BACKEND (backend),
id,
oostr,
ostr);
+ e_cal_component_free_id (id);
break;
default:
@@ -2271,7 +2321,6 @@ process_object (ECalBackendCalDAV *cbd
break;
}
- g_object_unref (ecomp);
g_free (ostr);
g_free (oostr);
g_free (rid);
@@ -2323,9 +2372,13 @@ caldav_receive_objects (ECalBackendSync
if (status == GNOME_Evolution_Calendar_Success) {
for (iter = timezones; iter; iter = iter->next) {
- icaltimezone *zone = iter->data;
+ icaltimezone *zone = icaltimezone_new ();
+
+ if (icaltimezone_set_component (zone, iter->data))
+ e_cal_backend_cache_put_timezone (priv->cache, zone);
+ else
+ icalcomponent_free (iter->data);
- e_cal_backend_cache_put_timezone (priv->cache, zone);
icaltimezone_free (zone, TRUE);
}
}
evolution-data-server-2.24.5-display-smime-sign-and-encrypt.patch:
--- NEW FILE evolution-data-server-2.24.5-display-smime-sign-and-encrypt.patch ---
diff -up evolution-data-server-2.24.5/camel/camel-smime-context.c.display-smime-sign-and-encrypt evolution-data-server-2.24.5/camel/camel-smime-context.c
--- evolution-data-server-2.24.5/camel/camel-smime-context.c.display-smime-sign-and-encrypt 2009-04-02 13:11:58.000000000 +0200
+++ evolution-data-server-2.24.5/camel/camel-smime-context.c 2009-04-02 13:13:14.000000000 +0200
@@ -969,7 +969,8 @@ sm_decrypt(CamelCipherContext *context,
camel_data_wrapper_construct_from_stream((CamelDataWrapper *)opart, ostream);
if (NSS_CMSMessage_IsSigned(cmsg)) {
- valid = sm_verify_cmsg(context, cmsg, NULL, ex);
+ camel_stream_reset (ostream);
+ valid = sm_verify_cmsg (context, cmsg, ostream, ex);
} else {
valid = camel_cipher_validity_new();
valid->encrypt.description = g_strdup(_("Encrypted content"));
Index: evolution-data-server.spec
===================================================================
RCS file: /cvs/pkgs/rpms/evolution-data-server/F-10/evolution-data-server.spec,v
retrieving revision 1.248
retrieving revision 1.249
diff -u -r1.248 -r1.249
--- evolution-data-server.spec 17 Mar 2009 18:15:02 -0000 1.248
+++ evolution-data-server.spec 6 Apr 2009 13:59:24 -0000 1.249
@@ -29,7 +29,7 @@
Name: evolution-data-server
Version: 2.24.5
-Release: 4%{?dist}
+Release: 5%{?dist}
License: LGPLv2
Group: System Environment/Libraries
Summary: Backend data server for Evolution
@@ -60,6 +60,12 @@
# RH bug #487685 / CVE-2009-0582
Patch16: evolution-data-server-2.24.5-CVE-2009-0582.patch
+# RH bug #492852 / GNOME bug #564465
+Patch17: evolution-data-server-2.24.5-display-smime-sign-and-encrypt.patch
+
+# GNOME bug #573187 (plus other changes)
+Patch18: evolution-data-server-2.24.5-caldav-leak-fix.patch
+
### Build Dependencies ###
BuildRequires: GConf2-devel
@@ -141,6 +147,8 @@
%patch14 -p1 -b .sqlite-fsync-rework
%patch15 -p1 -b .CVE-2009-0582
%patch16 -p1 -b .CVE-2009-0587
+%patch17 -p1 -b .display-smime-sign-and-encrypt
+%patch18 -p1 -b .caldav-leak-fix
mkdir -p krb5-fakeprefix/include
mkdir -p krb5-fakeprefix/lib
@@ -386,6 +394,10 @@
%{_datadir}/gtk-doc/html/libedataserverui
%changelog
+* Mon Apr 06 2009 Matthew Barnes <mbarnes at redhat.com> - 2.25.5-5.fc10
+- Add patch for RH bug #492852 (fix S/MIME signature verification).
+- Add patch for GNOME bug #573187 (CalDAV memory leaks).
+
* Tue Mar 17 2009 Matthew Barnes <mbarnes at redhat.com> - 2.25.5-4.fc10
- Add patch for RH bug #484925 (CVE-2009-0547, S/MIME signatures).
- Add patch for RH bug #487685 (CVE-2009-0582, NTLM authentication).
More information about the fedora-extras-commits
mailing list