diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libtls/tls.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index fe5bc964e2..c89b805af9 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: tls.c,v 1.20 2015/09/10 10:14:20 jsing Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.21 2015/09/10 10:22:28 beck Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -383,13 +383,11 @@ tls_handshake(struct tls *ctx) | |||
| 383 | return (rv); | 383 | return (rv); |
| 384 | } | 384 | } |
| 385 | 385 | ||
| 386 | int | 386 | ssize_t |
| 387 | tls_read(struct tls *ctx, void *buf, size_t buflen, size_t *outlen) | 387 | tls_read(struct tls *ctx, void *buf, size_t buflen) |
| 388 | { | 388 | { |
| 389 | ssize_t rv = -1; | ||
| 389 | int ssl_ret; | 390 | int ssl_ret; |
| 390 | int rv = -1; | ||
| 391 | |||
| 392 | *outlen = 0; | ||
| 393 | 391 | ||
| 394 | if ((ctx->state & TLS_HANDSHAKE_COMPLETE) == 0) { | 392 | if ((ctx->state & TLS_HANDSHAKE_COMPLETE) == 0) { |
| 395 | if ((rv = tls_handshake(ctx)) != 0) | 393 | if ((rv = tls_handshake(ctx)) != 0) |
| @@ -402,24 +400,21 @@ tls_read(struct tls *ctx, void *buf, size_t buflen, size_t *outlen) | |||
| 402 | } | 400 | } |
| 403 | 401 | ||
| 404 | if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) > 0) { | 402 | if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) > 0) { |
| 405 | *outlen = (size_t)ssl_ret; | 403 | rv = (ssize_t)ssl_ret; |
| 406 | rv = 0; | ||
| 407 | goto out; | 404 | goto out; |
| 408 | } | 405 | } |
| 409 | 406 | ||
| 410 | rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read"); | 407 | rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "read"); |
| 411 | out: | 408 | out: |
| 412 | errno = 0; | 409 | errno = 0; |
| 413 | return (rv); | 410 | return (rv); |
| 414 | } | 411 | } |
| 415 | 412 | ||
| 416 | int | 413 | ssize_t |
| 417 | tls_write(struct tls *ctx, const void *buf, size_t buflen, size_t *outlen) | 414 | tls_write(struct tls *ctx, const void *buf, size_t buflen) |
| 418 | { | 415 | { |
| 416 | ssize_t rv = -1; | ||
| 419 | int ssl_ret; | 417 | int ssl_ret; |
| 420 | int rv = -1; | ||
| 421 | |||
| 422 | *outlen = 0; | ||
| 423 | 418 | ||
| 424 | if ((ctx->state & TLS_HANDSHAKE_COMPLETE) == 0) { | 419 | if ((ctx->state & TLS_HANDSHAKE_COMPLETE) == 0) { |
| 425 | if ((rv = tls_handshake(ctx)) != 0) | 420 | if ((rv = tls_handshake(ctx)) != 0) |
| @@ -432,12 +427,11 @@ tls_write(struct tls *ctx, const void *buf, size_t buflen, size_t *outlen) | |||
| 432 | } | 427 | } |
| 433 | 428 | ||
| 434 | if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) > 0) { | 429 | if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) > 0) { |
| 435 | *outlen = (size_t)ssl_ret; | 430 | rv = (ssize_t)ssl_ret; |
| 436 | rv = 0; | ||
| 437 | goto out; | 431 | goto out; |
| 438 | } | 432 | } |
| 439 | 433 | ||
| 440 | rv = tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write"); | 434 | rv = (ssize_t)tls_ssl_error(ctx, ctx->ssl_conn, ssl_ret, "write"); |
| 441 | out: | 435 | out: |
| 442 | errno = 0; | 436 | errno = 0; |
| 443 | return (rv); | 437 | return (rv); |
