fix CVE-2015-3420: SSL/TLS handshake failures leading to a crash of the login process
This commit is contained in:
parent
907076b191
commit
51f4fff5f1
62
dovecot-2.1.6-86f535375750.patch
Normal file
62
dovecot-2.1.6-86f535375750.patch
Normal file
@ -0,0 +1,62 @@
|
||||
|
||||
# HG changeset patch
|
||||
# User Timo Sirainen <tss@iki.fi>
|
||||
# Date 1430213224 -7200
|
||||
# Node ID 86f5353757500a8c53aa708282bbdd77ac270011
|
||||
# Parent a2d342257b25e10e7c6c1aaade9e49d22d849c05
|
||||
*-login: Don't try to flush SSL output if SSL handshake fails.
|
||||
This fixes a crash on failed handshakes on some OpenSSL builds.
|
||||
|
||||
diff -r a2d342257b25 -r 86f535375750 src/login-common/ssl-proxy-openssl.c
|
||||
--- a/src/login-common/ssl-proxy-openssl.c Sat Apr 25 12:16:07 2015 +0300
|
||||
+++ b/src/login-common/ssl-proxy-openssl.c Tue Apr 28 11:27:04 2015 +0200
|
||||
@@ -80,6 +80,7 @@
|
||||
unsigned int cert_broken:1;
|
||||
unsigned int client_proxy:1;
|
||||
unsigned int flushing:1;
|
||||
+ unsigned int failed:1;
|
||||
};
|
||||
|
||||
struct ssl_parameters {
|
||||
@@ -131,6 +132,12 @@
|
||||
static int ssl_proxy_ctx_get_pkey_ec_curve_name(const struct master_service_ssl_settings *set);
|
||||
#endif
|
||||
|
||||
+static void ssl_proxy_destroy_failed(struct ssl_proxy *proxy)
|
||||
+{
|
||||
+ proxy->failed = TRUE;
|
||||
+ ssl_proxy_destroy(proxy);
|
||||
+}
|
||||
+
|
||||
static unsigned int ssl_server_context_hash(const struct ssl_server_context *ctx)
|
||||
{
|
||||
unsigned int i, g, h = 0;
|
||||
@@ -462,7 +469,7 @@
|
||||
|
||||
if (errstr != NULL) {
|
||||
proxy->last_error = i_strdup(errstr);
|
||||
- ssl_proxy_destroy(proxy);
|
||||
+ ssl_proxy_destroy_failed(proxy);
|
||||
}
|
||||
ssl_proxy_unref(proxy);
|
||||
}
|
||||
@@ -492,7 +499,7 @@
|
||||
|
||||
if (proxy->handshake_callback != NULL) {
|
||||
if (proxy->handshake_callback(proxy->handshake_context) < 0)
|
||||
- ssl_proxy_destroy(proxy);
|
||||
+ ssl_proxy_destroy_failed(proxy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -822,7 +829,8 @@
|
||||
if (proxy->destroyed || proxy->flushing)
|
||||
return;
|
||||
proxy->flushing = TRUE;
|
||||
- ssl_proxy_flush(proxy);
|
||||
+ if (!proxy->failed && proxy->handshaked)
|
||||
+ ssl_proxy_flush(proxy);
|
||||
proxy->destroyed = TRUE;
|
||||
|
||||
ssl_proxy_count--;
|
||||
|
@ -5,7 +5,7 @@ Name: dovecot
|
||||
Epoch: 1
|
||||
Version: 2.2.16
|
||||
%global prever %{nil}
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
#dovecot itself is MIT, a few sources are PD, pigeonhole is LGPLv2
|
||||
License: MIT and LGPLv2
|
||||
Group: System Environment/Daemons
|
||||
@ -37,6 +37,9 @@ Patch5: dovecot-2.1-privatetmp.patch
|
||||
Patch6: dovecot-2.1.10-waitonline.patch
|
||||
Patch7: dovecot-2.2.13-online.patch
|
||||
|
||||
# for dovecot <= 2.2.16, rhbz#1216057
|
||||
Patch8: dovecot-2.1.6-86f535375750.patch
|
||||
|
||||
Source15: prestartscript
|
||||
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -133,6 +136,7 @@ This package provides the development files for dovecot.
|
||||
%patch5 -p1 -b .privatetmp
|
||||
%patch6 -p1 -b .waitonline
|
||||
%patch7 -p1 -b .online
|
||||
%patch8 -p1 -b .86f535375750
|
||||
#pushd dovecot-2*2-pigeonhole-%{pigeonholever}
|
||||
#popd
|
||||
sed -i '/DEFAULT_INCLUDES *=/s|$| '"$(pkg-config --cflags libclucene-core)|" src/plugins/fts-lucene/Makefile.in
|
||||
@ -492,6 +496,9 @@ make check
|
||||
%{_libdir}/%{name}/dict/libdriver_pgsql.so
|
||||
|
||||
%changelog
|
||||
* Tue Apr 28 2015 Michal Hlavinka <mhlavink@redhat.com> - 1:2.2.16-2
|
||||
- fix CVE-2015-3420: SSL/TLS handshake failures leading to a crash of the login process
|
||||
|
||||
* Mon Mar 16 2015 Michal Hlavinka <mhlavink@redhat.com> - 1:2.2.16-1
|
||||
- dovecot updated to 2.2.16
|
||||
- auth: Don't crash if master user login is attempted without
|
||||
|
Loading…
Reference in New Issue
Block a user