summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls_server.c
diff options
context:
space:
mode:
authorjsing <>2015-09-12 19:54:31 +0000
committerjsing <>2015-09-12 19:54:31 +0000
commitb23c8f0c7e56fd5c6e99bcad0ec4f4a085be2d6a (patch)
tree6d7005f84ef8db59b7b30dd91562d159028dd12d /src/lib/libtls/tls_server.c
parent20f4bd301fadc705b6737e3b7fcac043b8ffb21a (diff)
downloadopenbsd-b23c8f0c7e56fd5c6e99bcad0ec4f4a085be2d6a.tar.gz
openbsd-b23c8f0c7e56fd5c6e99bcad0ec4f4a085be2d6a.tar.bz2
openbsd-b23c8f0c7e56fd5c6e99bcad0ec4f4a085be2d6a.zip
Ensure that we clear the libssl error stack before we make a function call
that we will pass the result through tls_ssl_error() on failure. Otherwise we can end up reporting spurious errors due to their being unrelated errors already on the error stack. Spotted by Marko Kreen. 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 69baf5c1c2..1baf717c90 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.16 2015/09/11 08:31:26 beck Exp $ */ 1/* $OpenBSD: tls_server.c,v 1.17 2015/09/12 19:54:31 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -16,6 +16,7 @@
16 */ 16 */
17 17
18#include <openssl/ec.h> 18#include <openssl/ec.h>
19#include <openssl/err.h>
19#include <openssl/ssl.h> 20#include <openssl/ssl.h>
20 21
21#include <tls.h> 22#include <tls.h>
@@ -167,6 +168,7 @@ tls_handshake_server(struct tls *ctx)
167 goto err; 168 goto err;
168 } 169 }
169 170
171 ERR_clear_error();
170 if ((ssl_ret = SSL_accept(ctx->ssl_conn)) != 1) { 172 if ((ssl_ret = SSL_accept(ctx->ssl_conn)) != 1) {
171 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "handshake"); 173 rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "handshake");
172 goto err; 174 goto err;