summaryrefslogtreecommitdiffstats
path: root/lib/libtls/tls_client.c
diff options
context:
space:
mode:
authorjsing <jsing@openbsd.org>2017-05-07 03:27:06 +0000
committerjsing <jsing@openbsd.org>2017-05-07 03:27:06 +0000
commitd5f88726aaff09ee4d9979bbe00ce83ad891e050 (patch)
treedec20a1544cc211bd27a19009c7ff314bcd1d854 /lib/libtls/tls_client.c
parentAdd a (currently failing) call to tls_handshake() on a client context that (diff)
downloadwireguard-openbsd-d5f88726aaff09ee4d9979bbe00ce83ad891e050.tar.xz
wireguard-openbsd-d5f88726aaff09ee4d9979bbe00ce83ad891e050.zip
Ensure that a client context has been connected before attempting to
complete a TLS handshake.
Diffstat (limited to 'lib/libtls/tls_client.c')
-rw-r--r--lib/libtls/tls_client.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/libtls/tls_client.c b/lib/libtls/tls_client.c
index 0e519684efc..b92490f25d1 100644
--- a/lib/libtls/tls_client.c
+++ b/lib/libtls/tls_client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tls_client.c,v 1.41 2017/04/10 17:11:13 jsing Exp $ */
+/* $OpenBSD: tls_client.c,v 1.42 2017/05/07 03:27:06 jsing Exp $ */
/*
* Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
*
@@ -230,6 +230,8 @@ tls_connect_common(struct tls *ctx, const char *servername)
goto err;
}
}
+
+ ctx->state |= TLS_CONNECTED;
rv = 0;
err:
@@ -297,6 +299,11 @@ tls_handshake_client(struct tls *ctx)
goto err;
}
+ if ((ctx->state & TLS_CONNECTED) == 0) {
+ tls_set_errorx(ctx, "context not connected");
+ goto err;
+ }
+
ctx->state |= TLS_SSL_NEEDS_SHUTDOWN;
ERR_clear_error();