diff options
author | Daniel Stenberg <daniel@haxx.se> | 2009-11-20 19:32:49 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2009-11-20 19:32:49 +0000 |
commit | 504e6d7ae67a0aa72078fbeab208bf43c81b1f20 (patch) | |
tree | eb076118c28527b5b9ab7d9390e6ad8faa3e0093 /lib | |
parent | c3266a5eb1340f5d7e467ced428a32b68b57a8f7 (diff) |
- Constantine Sapuntzakis identified a write after close, as the sockets were
closed by libcurl before the SSL lib were shutdown and they may write to its
socket. Detected to at least happen with OpenSSL builds.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/url.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -2300,6 +2300,11 @@ static void conn_free(struct connectdata *conn) if(!conn) return; + /* close the SSL stuff before we close any sockets since they will/may + write to the sockets */ + Curl_ssl_close(conn, FIRSTSOCKET); + Curl_ssl_close(conn, SECONDARYSOCKET); + /* close possibly still open sockets */ if(CURL_SOCKET_BAD != conn->sock[SECONDARYSOCKET]) sclose(conn->sock[SECONDARYSOCKET]); @@ -2336,9 +2341,6 @@ static void conn_free(struct connectdata *conn) Curl_destroy_thread_data(&conn->async); #endif - Curl_ssl_close(conn, FIRSTSOCKET); - Curl_ssl_close(conn, SECONDARYSOCKET); - Curl_free_ssl_config(&conn->ssl_config); free(conn); /* free all the connection oriented data */ |