diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libtls/tls.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index aa49641ab2..65103f106d 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls.c,v 1.25 2015/09/11 09:24:54 jsing Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.26 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 | * |
| @@ -405,12 +405,13 @@ tls_read(struct tls *ctx, void *buf, size_t buflen) | |||
| 405 | goto out; | 405 | goto out; |
| 406 | } | 406 | } |
| 407 | 407 | ||
| 408 | ERR_clear_error(); | ||
| 408 | if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) > 0) { | 409 | if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) > 0) { |
| 409 | rv = (ssize_t)ssl_ret; | 410 | rv = (ssize_t)ssl_ret; |
| 410 | goto out; | 411 | goto out; |
| 411 | } | 412 | } |
| 412 | |||
| 413 | rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read"); | 413 | rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read"); |
| 414 | |||
| 414 | out: | 415 | out: |
| 415 | /* Prevent callers from performing incorrect error handling */ | 416 | /* Prevent callers from performing incorrect error handling */ |
| 416 | errno = 0; | 417 | errno = 0; |
| @@ -433,12 +434,13 @@ tls_write(struct tls *ctx, const void *buf, size_t buflen) | |||
| 433 | goto out; | 434 | goto out; |
| 434 | } | 435 | } |
| 435 | 436 | ||
| 437 | ERR_clear_error(); | ||
| 436 | if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) > 0) { | 438 | if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) > 0) { |
| 437 | rv = (ssize_t)ssl_ret; | 439 | rv = (ssize_t)ssl_ret; |
| 438 | goto out; | 440 | goto out; |
| 439 | } | 441 | } |
| 440 | |||
| 441 | rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write"); | 442 | rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write"); |
| 443 | |||
| 442 | out: | 444 | out: |
| 443 | /* Prevent callers from performing incorrect error handling */ | 445 | /* Prevent callers from performing incorrect error handling */ |
| 444 | errno = 0; | 446 | errno = 0; |
| @@ -452,6 +454,7 @@ tls_close(struct tls *ctx) | |||
| 452 | int rv = 0; | 454 | int rv = 0; |
| 453 | 455 | ||
| 454 | if (ctx->ssl_conn != NULL) { | 456 | if (ctx->ssl_conn != NULL) { |
| 457 | ERR_clear_error(); | ||
| 455 | ssl_ret = SSL_shutdown(ctx->ssl_conn); | 458 | ssl_ret = SSL_shutdown(ctx->ssl_conn); |
| 456 | if (ssl_ret < 0) { | 459 | if (ssl_ret < 0) { |
| 457 | rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, | 460 | rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, |
