summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbeck <>2015-09-13 15:39:15 +0000
committerbeck <>2015-09-13 15:39:15 +0000
commita09b907e88e54dc0476432cae192084e3d0a1312 (patch)
tree344e2fd37d97de174d138f0a95114ebae00977b0
parent529bd5d820f710a2d7db3cb00f91040cc7ace408 (diff)
downloadopenbsd-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.c6
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 }