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