diff options
author | beck <> | 2015-09-13 15:39:15 +0000 |
---|---|---|
committer | beck <> | 2015-09-13 15:39:15 +0000 |
commit | a09b907e88e54dc0476432cae192084e3d0a1312 (patch) | |
tree | 344e2fd37d97de174d138f0a95114ebae00977b0 | |
parent | 529bd5d820f710a2d7db3cb00f91040cc7ace408 (diff) | |
download | openbsd-a09b907e88e54dc0476432cae192084e3d0a1312.tar.gz openbsd-a09b907e88e54dc0476432cae192084e3d0a1312.tar.bz2 openbsd-a09b907e88e54dc0476432cae192084e3d0a1312.zip |
work around the stupid semantics of SSL_read and SSL_write to make sure
we can indicate an EOF properly on tls_read and tls_write
ok jsing@
-rw-r--r-- | src/lib/libtls/tls.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index 4f89a40be4..3012ea62a6 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.c,v 1.28 2015/09/13 13:44:07 beck Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.29 2015/09/13 15:39:15 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -416,7 +416,7 @@ tls_read(struct tls *ctx, void *buf, size_t buflen) | |||
416 | } | 416 | } |
417 | 417 | ||
418 | ERR_clear_error(); | 418 | ERR_clear_error(); |
419 | if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) > 0) { | 419 | if ((ssl_ret = SSL_read(ctx->ssl_conn, buf, buflen)) >= 0) { |
420 | rv = (ssize_t)ssl_ret; | 420 | rv = (ssize_t)ssl_ret; |
421 | goto out; | 421 | goto out; |
422 | } | 422 | } |
@@ -445,7 +445,7 @@ tls_write(struct tls *ctx, const void *buf, size_t buflen) | |||
445 | } | 445 | } |
446 | 446 | ||
447 | ERR_clear_error(); | 447 | ERR_clear_error(); |
448 | if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) > 0) { | 448 | if ((ssl_ret = SSL_write(ctx->ssl_conn, buf, buflen)) >= 0) { |
449 | rv = (ssize_t)ssl_ret; | 449 | rv = (ssize_t)ssl_ret; |
450 | goto out; | 450 | goto out; |
451 | } | 451 | } |