pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/49599: mail/dovecot (Dovecot 1.2) fix for CVE-2014-3430



>Number:         49599
>Category:       pkg
>Synopsis:       mail/dovecot (Dovecot 1.2) fix for CVE-2014-3430
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jan 22 17:40:00 +0000 2015
>Originator:     Edgar FuÃ?
>Release:        pkgsrc-2014Q4
>Organization:
	Mathematisches Institu der Universität Bonn
>Description:
	Dovecot 1.2 is subject to a denial-of-service vulnerability, CVE-2014-3430.
	Timo Sirainen has prepared a fix (http://hg.dovecot.org/dovecot-1.2/raw-rev/8ba4253adc9b), but hasn't released a new 1.2.x version (see http://permalink.gmane.org/gmane.mail.imap.dovecot/77499)
>How-To-Repeat:
	cd mail/dovecot && make fetch
>Fix:
	Adapt the patch provided by Timo Sirainen:

	$NetBSD: patch-CVE-2014-3430 $

	login: SSL connections didn't get closed when the client got destroyed.
	essentially http://hg.dovecot.org/dovecot-1.2/raw-rev/8ba4253adc9b 
	fixes CVE-2014-3430.
	--- src/imap-login/client.c.orig	2010-01-25 00:14:17.000000000 +0100
	+++ src/imap-login/client.c	2015-01-22 18:18:22.000000000 +0100
	@@ -557,6 +557,8 @@
	 
		client_unlink(&client->common);
	 
	+	if (!client->login_success && client->common.proxy != NULL)
	+		ssl_proxy_destroy(client->common.proxy);
		if (client->common.input != NULL)
			i_stream_close(client->common.input);
		if (client->output != NULL)
	--- src/login-common/ssl-proxy-openssl.c.orig	2011-01-20 22:16:59.000000000 +0100
	+++ src/login-common/ssl-proxy-openssl.c	2015-01-22 18:18:22.000000000 +0100
	@@ -80,7 +80,6 @@
	 static void ssl_read(struct ssl_proxy *proxy);
	 static void ssl_write(struct ssl_proxy *proxy);
	 static void ssl_step(struct ssl_proxy *proxy);
	-static void ssl_proxy_destroy(struct ssl_proxy *proxy);
	 static void ssl_proxy_unref(struct ssl_proxy *proxy);
	 
	 static void ssl_params_corrupted(const char *path)
	@@ -676,7 +675,7 @@
		main_unref();
	 }
	 
	-static void ssl_proxy_destroy(struct ssl_proxy *proxy)
	+void ssl_proxy_destroy(struct ssl_proxy *proxy)
	 {
		if (proxy->destroyed)
			return;
	--- src/login-common/ssl-proxy.c.orig	2010-01-25 00:14:17.000000000 +0100
	+++ src/login-common/ssl-proxy.c	2015-01-22 18:18:22.000000000 +0100
	@@ -55,6 +55,8 @@
		return "";
	 }
	 
	+void ssl_proxy_destroy(struct ssl_proxy *proxy ATTR_UNUSED) {}
	+
	 void ssl_proxy_free(struct ssl_proxy *proxy ATTR_UNUSED) {}
	 
	 unsigned int ssl_proxy_get_count(void)
	--- src/login-common/ssl-proxy.h.orig	2009-06-27 06:49:34.000000000 +0200
	+++ src/login-common/ssl-proxy.h	2015-01-22 18:18:22.000000000 +0100
	@@ -24,6 +24,7 @@
	 bool ssl_proxy_is_handshaked(const struct ssl_proxy *proxy) ATTR_PURE;
	 const char *ssl_proxy_get_last_error(const struct ssl_proxy *proxy) ATTR_PURE;
	 const char *ssl_proxy_get_security_string(struct ssl_proxy *proxy);
	+void ssl_proxy_destroy(struct ssl_proxy *proxy);
	 void ssl_proxy_free(struct ssl_proxy *proxy);
	 
	 /* Return number of active SSL proxies */
	--- src/pop3-login/client.c.orig	2010-01-25 00:14:17.000000000 +0100
	+++ src/pop3-login/client.c	2015-01-22 18:18:22.000000000 +0100
	@@ -359,6 +359,8 @@
	 
		client_unlink(&client->common);
	 
	+	if (!client->login_success && client->common.proxy != NULL)
	+		ssl_proxy_destroy(client->common.proxy);
		if (client->common.input != NULL)
			i_stream_close(client->common.input);
		if (client->output != NULL)


	update distinfo and bump PKGREVISON:

	Index: Makefile
	===================================================================
	RCS file: /cvsroot/pkgsrc/mail/dovecot/Makefile,v
	retrieving revision 1.174
	diff -u -r1.174 Makefile
	--- Makefile	9 Oct 2014 14:06:38 -0000	1.174
	+++ Makefile	22 Jan 2015 17:29:30 -0000
	@@ -5,7 +5,7 @@
	 SIEVE_VERSION=		0.1.19
	 MANAGESIEVE_VERSION=	0.11.13
	 DISTNAME=		dovecot-${DOVECOT_VERSION}${DOVECOT_SUBVERSION}
	-PKGREVISION=		14
	+PKGREVISION=		15
	 CATEGORIES=		mail
	 MASTER_SITES=		http://www.dovecot.org/releases/${DOVECOT_VERSION}/
	 DOVECOT_SIEVE_SITES=	http://www.rename-it.nl/dovecot/${DOVECOT_VERSION}/
	Index: distinfo
	===================================================================
	RCS file: /cvsroot/pkgsrc/mail/dovecot/distinfo,v
	retrieving revision 1.118
	diff -u -r1.118 distinfo
	--- distinfo	9 Jun 2011 13:15:35 -0000	1.118
	+++ distinfo	22 Jan 2015 17:29:30 -0000
	@@ -12,6 +12,7 @@
	 SHA1 (dovecot-1.2.17.tar.gz) = 457b16791a15e739c6bc8b02bc9c78f9ad794e39
	 RMD160 (dovecot-1.2.17.tar.gz) = 59f619dba2aadef3cccd6ceb045a2e75a11700a2
	 Size (dovecot-1.2.17.tar.gz) = 2983431 bytes
	+SHA1 (patch-CVE-2014-3430) = f719b06f53992019d17c91db9e5030c3d0732813
	 SHA1 (patch-aa) = 447e46268a93201b3ef22491ff0968752978d020
	 SHA1 (patch-ab) = e5b5d72f0553da42d14ee05a9ed0faff8a6c7075
	 SHA1 (patch-ac) = 5912392abb79df8e78de6f710c2a83264ee58fe7



Home | Main Index | Thread Index | Old Index