[curl/f20] fix a connection failure when FTPS handle is reused
Kamil Dudka
kdudka at fedoraproject.org
Tue Oct 21 10:56:46 UTC 2014
commit 06c063b13f2fe4b6bf65757326944bae98602dad
Author: Kamil Dudka <kdudka at redhat.com>
Date: Tue Oct 21 12:14:19 2014 +0200
fix a connection failure when FTPS handle is reused
0015-curl-7.32.0-0aecdf68.patch | 67 +++++++++++++++++++++++++++++++++++++++
curl.spec | 9 +++++-
2 files changed, 75 insertions(+), 1 deletions(-)
---
diff --git a/0015-curl-7.32.0-0aecdf68.patch b/0015-curl-7.32.0-0aecdf68.patch
new file mode 100644
index 0000000..96867f4
--- /dev/null
+++ b/0015-curl-7.32.0-0aecdf68.patch
@@ -0,0 +1,67 @@
+From 3b5763fcce74f1e711097e09f6d70a1bc062ae38 Mon Sep 17 00:00:00 2001
+From: Kamil Dudka <kdudka at redhat.com>
+Date: Mon, 20 Oct 2014 18:18:57 +0200
+Subject: [PATCH] nss: reset SSL handshake state machine
+
+... when the handshake succeeds
+
+This fixes a connection failure when FTPS handle is reused.
+
+Upstream-commit: 0aecdf682895b42c25b232e91529f48bdf7738b3
+Signed-off-by: Kamil Dudka <kdudka at redhat.com>
+---
+ lib/nss.c | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/lib/nss.c b/lib/nss.c
+index 70e67c6..40daee3 100644
+--- a/lib/nss.c
++++ b/lib/nss.c
+@@ -1315,9 +1315,6 @@ static CURLcode nss_setup_connect(struct connectdata *conn, int sockindex)
+ CURLcode curlerr;
+ const int *cipher_to_enable;
+
+- if(connssl->state == ssl_connection_complete)
+- return CURLE_OK;
+-
+ connssl->data = data;
+
+ /* list of all NSS objects we need to destroy in Curl_nss_close() */
+@@ -1577,10 +1574,6 @@ static CURLcode nss_do_connect(struct connectdata *conn, int sockindex)
+ goto error;
+ }
+
+- connssl->state = ssl_connection_complete;
+- conn->recv[sockindex] = nss_recv;
+- conn->send[sockindex] = nss_send;
+-
+ display_conn_info(conn, connssl->handle);
+
+ if(data->set.str[STRING_SSL_ISSUERCERT]) {
+@@ -1616,6 +1609,9 @@ static CURLcode nss_connect_common(struct connectdata *conn, int sockindex,
+ const bool blocking = (done == NULL);
+ CURLcode rv;
+
++ if(connssl->state == ssl_connection_complete)
++ return CURLE_OK;
++
+ if(connssl->connecting_state == ssl_connect_1) {
+ rv = nss_setup_connect(conn, sockindex);
+ if(rv)
+@@ -1655,7 +1651,12 @@ static CURLcode nss_connect_common(struct connectdata *conn, int sockindex,
+ /* signal completed SSL handshake */
+ *done = TRUE;
+
+- connssl->connecting_state = ssl_connect_done;
++ connssl->state = ssl_connection_complete;
++ conn->recv[sockindex] = nss_recv;
++ conn->send[sockindex] = nss_send;
++
++ /* ssl_connect_done is never used outside, go back to the initial state */
++ connssl->connecting_state = ssl_connect_1;
+ return CURLE_OK;
+ }
+
+--
+2.1.0
+
diff --git a/curl.spec b/curl.spec
index f2c7078..20c7f87 100644
--- a/curl.spec
+++ b/curl.spec
@@ -1,7 +1,7 @@
Summary: A utility for getting files from remote servers (FTP, HTTP, and others)
Name: curl
Version: 7.32.0
-Release: 13%{?dist}
+Release: 14%{?dist}
License: MIT
Group: Applications/Internet
Source: http://curl.haxx.se/download/%{name}-%{version}.tar.lzma
@@ -49,6 +49,9 @@ Patch13: 0013-curl-7.32.0-CVE-2014-3613.patch
# reject incoming cookies set for top level domains (CVE-2014-3620)
Patch14: 0014-curl-7.32.0-CVE-2014-3620.patch
+# fix a connection failure when FTPS handle is reused
+Patch15: 0015-curl-7.32.0-0aecdf68.patch
+
# patch making libcurl multilib ready
Patch101: 0101-curl-7.32.0-multilib.patch
@@ -175,6 +178,7 @@ documentation of the library, too.
%patch12 -p1
%patch13 -p1
%patch14 -p1
+%patch15 -p1
# Fedora patches
%patch101 -p1
@@ -296,6 +300,9 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/aclocal/libcurl.m4
%changelog
+* Tue Oct 21 2014 Kamil Dudka <kdudka at redhat.com> 7.32.0-14
+- fix a connection failure when FTPS handle is reused
+
* Wed Sep 10 2014 Kamil Dudka <kdudka at redhat.com> 7.32.0-13
- use only full matches for hosts used as IP address in cookies (CVE-2014-3613)
- reject incoming cookies set for top level domains (CVE-2014-3620)
More information about the scm-commits
mailing list