diff options
author | jsing <> | 2017-01-26 12:56:37 +0000 |
---|---|---|
committer | jsing <> | 2017-01-26 12:56:37 +0000 |
commit | faeda34edddb798c605b02be985707c383fc2619 (patch) | |
tree | b6f097154c11d0ef88cefdbed8094e57584a2602 /src/lib/libtls/tls_client.c | |
parent | 5f4d6ed4e05cb127aa9702893fbc6baf9ee43f35 (diff) | |
download | openbsd-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.c | 4 |
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"); |