rpms/sylpheed/FC-5 sylpheed-2.2.10-apop-cve-2007-1558.patch, NONE, 1.1 sylpheed.spec, 1.35, 1.36
Michael Schwendt (mschwendt)
fedora-extras-commits at redhat.com
Sat Apr 21 09:27:53 UTC 2007
Author: mschwendt
Update of /cvs/extras/rpms/sylpheed/FC-5
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv26230
Modified Files:
sylpheed.spec
Added Files:
sylpheed-2.2.10-apop-cve-2007-1558.patch
Log Message:
* Sat Apr 21 2007 Michael Schwendt <mschwendt[AT]users.sf.net> - 2.2.10-2
- Backport fix for APOP vulnerability (CVE-2007-1558).
sylpheed-2.2.10-apop-cve-2007-1558.patch:
--- NEW FILE sylpheed-2.2.10-apop-cve-2007-1558.patch ---
diff -Nur sylpheed-2.2.10-orig/libsylph/pop.c sylpheed-2.2.10/libsylph/pop.c
--- sylpheed-2.2.10-orig/libsylph/pop.c 2006-09-26 04:22:32.000000000 +0200
+++ sylpheed-2.2.10/libsylph/pop.c 2007-04-21 11:05:17.000000000 +0200
@@ -166,6 +166,12 @@
*(end + 1) = '\0';
+ if (!is_ascii_str(start) || strchr(start, '@') == NULL) {
+ log_warning(_("Invalid timestamp in greeting\n"));
+ session->error_val = PS_PROTOCOL;
+ return -1;
+ }
+
apop_str = g_strconcat(start, session->pass, NULL);
md5 = s_gnet_md5_new((guchar *)apop_str, strlen(apop_str));
md5sum = s_gnet_md5_get_string(md5);
@@ -705,7 +711,7 @@
static gint pop3_session_recv_msg(Session *session, const gchar *msg)
{
Pop3Session *pop3_session = POP3_SESSION(session);
- Pop3ErrorValue val = PS_SUCCESS;
+ gint val = PS_SUCCESS;
const gchar *body;
body = msg;
@@ -730,73 +736,73 @@
switch (pop3_session->state) {
case POP3_READY:
case POP3_GREETING:
- pop3_greeting_recv(pop3_session, body);
+ val = pop3_greeting_recv(pop3_session, body);
#if USE_SSL
if (pop3_session->ac_prefs->ssl_pop == SSL_STARTTLS)
- pop3_stls_send(pop3_session);
+ val = pop3_stls_send(pop3_session);
else
#endif
if (pop3_session->ac_prefs->use_apop_auth)
- pop3_getauth_apop_send(pop3_session);
+ val = pop3_getauth_apop_send(pop3_session);
else
- pop3_getauth_user_send(pop3_session);
+ val = pop3_getauth_user_send(pop3_session);
break;
#if USE_SSL
case POP3_STLS:
- if (pop3_stls_recv(pop3_session) != PS_SUCCESS)
+ if ((val = pop3_stls_recv(pop3_session)) != PS_SUCCESS)
return -1;
if (pop3_session->ac_prefs->use_apop_auth)
- pop3_getauth_apop_send(pop3_session);
+ val = pop3_getauth_apop_send(pop3_session);
else
- pop3_getauth_user_send(pop3_session);
+ val = pop3_getauth_user_send(pop3_session);
break;
#endif
case POP3_GETAUTH_USER:
- pop3_getauth_pass_send(pop3_session);
+ val = pop3_getauth_pass_send(pop3_session);
break;
case POP3_GETAUTH_PASS:
case POP3_GETAUTH_APOP:
- pop3_getrange_stat_send(pop3_session);
+ val = pop3_getrange_stat_send(pop3_session);
break;
case POP3_GETRANGE_STAT:
- if (pop3_getrange_stat_recv(pop3_session, body) < 0)
+ if ((val = pop3_getrange_stat_recv(pop3_session, body)) < 0)
return -1;
if (pop3_session->count > 0)
- pop3_getrange_uidl_send(pop3_session);
+ val = pop3_getrange_uidl_send(pop3_session);
else
- pop3_logout_send(pop3_session);
+ val = pop3_logout_send(pop3_session);
break;
case POP3_GETRANGE_LAST:
if (val == PS_NOTSUPPORTED)
pop3_session->error_val = PS_SUCCESS;
- else if (pop3_getrange_last_recv(pop3_session, body) < 0)
+ else if ((val = pop3_getrange_last_recv(pop3_session, body)) < 0)
return -1;
if (pop3_session->cur_msg > 0)
- pop3_getsize_list_send(pop3_session);
+ val = pop3_getsize_list_send(pop3_session);
else
- pop3_logout_send(pop3_session);
+ val = pop3_logout_send(pop3_session);
break;
case POP3_GETRANGE_UIDL:
if (val == PS_NOTSUPPORTED) {
pop3_session->error_val = PS_SUCCESS;
- pop3_getrange_last_send(pop3_session);
+ val = pop3_getrange_last_send(pop3_session);
} else {
pop3_session->state = POP3_GETRANGE_UIDL_RECV;
- session_recv_data(session, 0, ".\r\n");
+ val = session_recv_data(session, 0, ".\r\n");
}
break;
case POP3_GETSIZE_LIST:
pop3_session->state = POP3_GETSIZE_LIST_RECV;
- session_recv_data(session, 0, ".\r\n");
+ val = session_recv_data(session, 0, ".\r\n");
break;
case POP3_RETR:
pop3_session->state = POP3_RETR_RECV;
- session_recv_data_as_file(session, 0, ".\r\n");
+ val = session_recv_data_as_file(session, 0, ".\r\n");
break;
case POP3_DELETE:
- pop3_delete_recv(pop3_session);
+ val = pop3_delete_recv(pop3_session);
if (pop3_session->cur_msg == pop3_session->count)
- pop3_logout_send(pop3_session);
+ val = pop3_logout_send(pop3_session);
else {
pop3_session->cur_msg++;
if (pop3_lookup_next(pop3_session) == POP3_ERROR)
@@ -812,7 +818,10 @@
return -1;
}
- return 0;
+ if (val == PS_SUCCESS)
+ return 0;
+ else
+ return -1;
}
static gint pop3_session_recv_data_finished(Session *session, guchar *data,
Index: sylpheed.spec
===================================================================
RCS file: /cvs/extras/rpms/sylpheed/FC-5/sylpheed.spec,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- sylpheed.spec 21 Nov 2006 09:31:11 -0000 1.35
+++ sylpheed.spec 21 Apr 2007 09:27:19 -0000 1.36
@@ -5,7 +5,7 @@
Summary: GTK+ based, lightweight, and fast email client
Name: sylpheed
Version: 2.2.10
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPL
URL: http://sylpheed.sraoss.jp/
Group: Applications/Internet
@@ -23,6 +23,7 @@
Patch1: sylpheed-2.2.3-defs.h.patch
Patch2: sylpheed-2.2.7-desktop.patch
Patch4: sylpheed-2.2.5-prefs_common.patch
+Patch5: sylpheed-2.2.10-apop-cve-2007-1558.patch
%description
This program is an X based fast email client which has features
@@ -43,6 +44,7 @@
%setup -q
%patch1 -p1 -b .defs.h
%patch2 -p1 -b .desktop
+%patch5 -p1 -b .apop
%patch4 -p1 -b .prefs_common
%build
@@ -84,6 +86,9 @@
%{_mandir}/man1/*
%changelog
+* Sat Apr 21 2007 Michael Schwendt <mschwendt[AT]users.sf.net> - 2.2.10-2
+- Backport fix for APOP vulnerability (CVE-2007-1558).
+
* Thu Nov 16 2006 Michael Schwendt <mschwendt[AT]users.sf.net> - 2.2.10-1
- Update to 2.2.10 (recommended bug-fixes only).
More information about the fedora-extras-commits
mailing list