summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls_server.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_server.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_server.c')
-rw-r--r--src/lib/libtls/tls_server.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib/libtls/tls_server.c b/src/lib/libtls/tls_server.c
index 5bf87552cb..1a1a48a169 100644
--- a/src/lib/libtls/tls_server.c
+++ b/src/lib/libtls/tls_server.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_server.c,v 1.33 2017/01/24 01:48:05 claudio Exp $ */ 1/* $OpenBSD: tls_server.c,v 1.34 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 *
@@ -457,6 +457,8 @@ tls_handshake_server(struct tls *ctx)
457 goto err; 457 goto err;
458 } 458 }
459 459
460 ctx->state |= TLS_SSL_NEEDS_SHUTDOWN;
461
460 ERR_clear_error(); 462 ERR_clear_error();
461 if ((ssl_ret = SSL_accept(ctx->ssl_conn)) != 1) { 463 if ((ssl_ret = SSL_accept(ctx->ssl_conn)) != 1) {
462 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "handshake"); 464 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "handshake");