summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls_client.c
diff options
context:
space:
mode:
authorjsing <>2017-01-26 12:56:37 +0000
committerjsing <>2017-01-26 12:56:37 +0000
commitfaeda34edddb798c605b02be985707c383fc2619 (patch)
treeb6f097154c11d0ef88cefdbed8094e57584a2602 /src/lib/libtls/tls_client.c
parent5f4d6ed4e05cb127aa9702893fbc6baf9ee43f35 (diff)
downloadopenbsd-faeda34edddb798c605b02be985707c383fc2619.tar.gz
openbsd-faeda34edddb798c605b02be985707c383fc2619.tar.bz2
openbsd-faeda34edddb798c605b02be985707c383fc2619.zip
Use a flag to track when we need to call SSL_shutdown(). This avoids an
issue where by calling tls_close() on a TLS context that has not attempted a handshake, results in an unexpected failure. Reported by Vinay Sajip. ok beck@
Diffstat (limited to 'src/lib/libtls/tls_client.c')
-rw-r--r--src/lib/libtls/tls_client.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/libtls/tls_client.c b/src/lib/libtls/tls_client.c
index d22a8a95ce..a1e2caa717 100644
--- a/src/lib/libtls/tls_client.c
+++ b/src/lib/libtls/tls_client.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_client.c,v 1.39 2017/01/12 16:15:58 jsing Exp $ */ 1/* $OpenBSD: tls_client.c,v 1.40 2017/01/26 12:56:37 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -297,6 +297,8 @@ tls_handshake_client(struct tls *ctx)
297 goto err; 297 goto err;
298 } 298 }
299 299
300 ctx->state |= TLS_SSL_NEEDS_SHUTDOWN;
301
300 ERR_clear_error(); 302 ERR_clear_error();
301 if ((ssl_ret = SSL_connect(ctx->ssl_conn)) != 1) { 303 if ((ssl_ret = SSL_connect(ctx->ssl_conn)) != 1) {
302 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "handshake"); 304 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "handshake");